如何使用JavaScript在单独的线程中打开新选项卡?(铬)

Ved*_*kic 8 javascript tabs google-chrome

是否可以打开一个在单独的线程中运行的新弹出选项卡?更具体地说,如果我创建一个新的弹出选项卡并在该新选项卡中开始调试,则包含链接的选项卡也将暂停javascript,直到我在新选项卡中单击resume.我想要实现的是创建一个分离的新选项卡,以便在父选项卡继续运行时我可以调试它.我使用Chrome浏览器时遇到此问题.请注意,这在Firefox中运行良好(尚未在其他浏览器中测试).

dom*_*ojk 6

通常chrome强制新窗口在相同的进程ID上运行.但是,有一些技术允许站点打开一个新窗口而不强制它进入同一个进程:

使用指向新窗口的其他网站的链接,而不传递引用者信息.

<a href="http://differentsite.com" target="_blank" rel="noreferrer">Open in new tab and new process</a>
Run Code Online (Sandbox Code Playgroud)

如果您希望新选项卡在新进程中打开,同时仍传递引用者信息,则可以在JavaScript中使用以下步骤:

  • 使用about:blank作为目标打开新选项卡.
  • 将新打开的选项卡的opener变量设置为null,以便它无法访问原始页面.
  • 从about:blank重定向到与原始页面不同的网站.

例如:

var w = window.open();
    w.opener = null;
    w.document.location = "http://differentsite.com/index.html";
Run Code Online (Sandbox Code Playgroud)

从技术上讲,原始网站仍然可以访问新的网站w,但是他们将.opener = null视为中性窗口的线索.

资料来源:https://bugzilla.mozilla.org/show_bug.cgi?id = 666746