只是一个想法,但是使用IFRAME
而不是DIV
基本上会使该元素与窗口隔离,导致IFRAME
中运行速度慢的脚本不会影响其他框架/窗户?
答案 0 :(得分:8)
对于第一部分,是的,iframe将“排序”将窗口与iframe中的脚本隔离开来。但是,仍可以通过window.parent
访问父窗口。
对于第二部分:不,它不会使它如此慢iframe中的脚本不会影响其他帧/窗口。您的主窗口对象及其子节点都在同一个线程中运行。 JavaScript是单线程的[在这种情况下忽略webworkers,你无法在它们之间传递dom元素],所以你可以访问parent-window / child-iframe的window对象的唯一原因是因为它们在同一个线程上。
提供一个简单的例子:
src="iframe.html"
window.onload = function(){ while(1){} };
来源:
我也尝试过像这样的多线程。学到了很多东西=)
答案 1 :(得分:2)
在新版浏览器中,您可以使用沙盒属性将iframe与页面的其余部分隔离开来