iFrame隔离

Lou*_*uis 5 javascript iframe isolation

只是一个想法,但是会使用IFRAME一个DIV基本上使该元素与窗口隔离的方式,以减慢在其中运行的脚本IFRAME不会影响其他框架/窗口?

War*_*rty 11

对于第一部分,是的,iframe将"排序"将窗口与iframe中的脚本隔离开来.但是,仍然可以通过访问父窗口window.parent.

对于第二部分:不,它不会使它如此慢iframe中的脚本不会影响其他框架/窗口.您的主窗口对象及其子节点都在同一个线程中运行.JavaScript是单线程的[在这种情况下忽略webworkers,你无法在它们之间传递dom元素],所以你可以访问parent-window/child-iframe的window对象的唯一原因是因为它们在同一个线程上.

提供一个简单的例子:

  • 创建一个名为main.html的页面
  • 在该页面中,有一个iframe src="iframe.html"
  • 在iframe旁边,有一个按钮,上面有你想要的任何文字,我不在乎.
  • 在iframe.html中, window.onload = function(){ while(1){} };
  • 访问iframe.html.您会注意到,当您将鼠标光标放在按钮上时,它不会响应/重绘.这是因为浏览器被冻结了.

来源:
我也尝试过这样的多线程.学到了很多东西=)

  • 正确答案,但一句小话; "但是,仍然可以通过window.parent访问父窗口"仅在父和子(iframe)位于同一域时才正确.如果不是,那么由于"同源策略",你确实可以将iframe视为沙盒环境. (5认同)