2016-09-19 57 views
4

是否可以打開一個新的彈出式選項卡,該選項卡可以在單獨的線程中運行?更具體地說,如果我創建一個新的彈出選項卡並開始在新選項卡中進行調試,那麼包含鏈接的選項卡也會暫停JavaScript,直到我在新選項卡中單擊繼續。我想要實現的是創建一個新的選項卡,以便在父項選項卡繼續運行時對其進行調試。 我有使用Chrome瀏覽器的這個問題。請注意,這在Firefox中正常工作(尚未在其他瀏覽器中測試過)。如何使用JavaScript在單獨的線程中打開新選項卡? (chrome)

回答

4

通常,chrome會強制新窗口在相同的進程ID上運行。 但是,有些技術允許網站打開一個新窗口而不強制它進入相同的過程:

使用指向不同網站的鏈接,該鏈接指向一個新窗口而不傳遞引用信息。

<a href="http://differentsite.com" target="_blank" rel="noreferrer">Open in new tab and new process</a> 

如果你想在新標籤中打開一個新的進程,同時仍然傳遞來源的信息,您可以使用以下步驟在JavaScript:

  • 打開有關新標籤:空白作其目標。
  • 將新打開的選項卡的opener變量設置爲null,以便它無法訪問原始頁面。
  • 從about:blank重定向到與原始頁面不同的網站。

例如:

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

技術上的原始網站仍具有通過w進入新的,但他們對待.opener = null作爲線索閹割的窗口。

來源:https://bugzilla.mozilla.org/show_bug.cgi?id=666746

0

您是否嘗試過使用Web Workers?不確定支持,但他們應該提供並行的JS執行功能。見herehere

+0

這就是矯枉過正了這個問題。由於這在Firefox中起作用,我認爲該解決方案不需要對我的代碼進行重大更改。 –

相關問題