Iframe 是否创建单独的执行上下文?

avi*_*han 6 javascript

我正在用 js 编写一个 html 解析器,它处理和操作很多节点。

我想分摊开销,这样我就不会导致 UI 冻结。

我想过使用 web Worker,但它没有 DOM 访问权限,所以目前我setTimeout(0)在循环中使用它来不冻结 UI,但我想过创建多个空白 iframe 并使用它们的窗口上下文来执行此任务。

我的问题是它是否真的被认为是一个单独的执行上下文并与主上下文并行运行,或者它仍然会冻结主 UI?

Bar*_*mar -1

是的,iframe 中的 JavaScript 在其自己的线程中运行,它不会阻塞父窗口。它主要类似于一个单独的窗口或选项卡,主要区别在于它在父框架内呈现,并且可以使用window.parent.