只是一个想法,但是使用IFRAME
over aDIV
基本上会使该元素与窗口隔离,从而使在其中运行的慢速脚本IFRAME
不会影响其他框架/窗口?
问问题
7442 次
2 回答
11
是的,对于第一部分,iframe 将“某种程度上”将您的窗口与 iframe 中的脚本隔离开来。但是,仍然可以通过 访问父窗口window.parent
。
对于第二部分:不,它不会使 iframe 中的慢脚本不会影响其他框架/窗口。您的主窗口对象及其子节点都在同一个线程中运行。JavaScript 是单线程的[在这种情况下忽略 webworkers,你不能在它们之间传递 dom 元素],所以你可以访问父窗口/子 iframe 的窗口对象的唯一原因是因为它们在同一个线程上。
提供一个简单的示例:
- 创建一个名为 main.html 的页面
- 在该页面中,有一个 iframe
src="iframe.html"
- 在 iframe 旁边,有一个按钮,上面有你想要的任何文本,我不在乎。
- 在 iframe.html 中,
window.onload = function(){ while(1){} };
- 访问 iframe.html。您会注意到,当您将鼠标光标放在按钮上时,它不会响应/重绘。这是因为浏览器被冻结。
资料来源:
我也尝试过这样的多线程。学习了艰难的方式=)
于 2010-04-20T06:31:08.750 回答
3
在新浏览器中,您可以使用沙箱属性将 iframe 与页面的其余部分隔离开来
于 2015-11-19T04:41:49.617 回答