2010-07-08 66 views
12

我正在使用Mozilla Firefox,並試圖找出一種方法來訪問使用JavaScript和DOM的同一窗口中的其他選項卡的內容(如果存在其他技術,我可以使用它) 。訪問瀏覽器中其他選項卡的內容

E.g.我想在tab1中運行一個JavaScript,它可以找到其他標籤的標題。基本上我需要這個,以便我可以識別在當前頁面中打開的標籤,因爲href沒有使用window.open方法。我想要的只是一個簡單的超鏈接,它打開屬於與當前頁面相同域的頁面(頁面應該在新標籤中打開)。現在我希望能夠從當前選項卡訪問這個新選項卡。

回答

10

你可以使用HTML5 cross-window messaging ...但這是有點尖端。

即使在這種情況下,您可能需要使用javascript劫持標記'click'事件,並自己打開窗口,以便您可以訪問新窗口對象以發佈消息。

+2

看起來我們在過去的六年裏向前邁進了很多步驟:) http://caniuse.com/#feat=x-doc-messaging – Loupax 2016-12-06 11:01:15

13

雖然你可以很容易地使用javascript打開一個新窗口,但我相信這是遠遠不夠的。從安全角度來看,您不希望一個選項卡中的Javascript能夠在另一個選項卡中查詢/訪問DOM。如果兩個網站都在單獨的選項卡中打開,則任何網站都可以訪問您的銀行帳戶詳細信息等。

+6

是的。我知道。但是,正如我前面提到的那樣,新標籤頁/窗口將屬於同一個域,所以我不可能從我自己的網站上「竊取」銀行帳戶詳細信息。無論如何感謝您的及時回覆球員......但需要找到一個解決方法。 - 再次感謝 – vamyip 2010-07-09 04:50:07

+0

您可以通過跟蹤服務器端打開的標籤來創建類似的效果嗎?例如。假設你有意編寫了某個鏈接在新標籤中打開,那麼你知道用戶有兩個標籤打開。此外,如果客戶端js(ajax)從兩個選項卡每隔幾秒「檢入」一次,則可以通過服務器中繼標籤間通信。例如。也許選項卡1正在編輯「Zoo」對象,並將其名稱從「Boston」更改爲「Denver」。表2是「波士頓動物園動物」,您可以在動物園更換動物。選項卡2更新爲帶有ajax更新的「丹佛動物園動物」。 – 2017-07-15 00:44:44

7

如果用JavaScript打開並且頁面確實在同一個域中,則可以訪問新窗口/選項卡。

您可以打開,像這樣

var win = window.open("/path_to_page"); 

窗口/選項卡,然後你就必須等待網頁加載,然後才能訪問例如標題。

win.onload = function(){ alert(win.document.title); }; 
+1

只要確保兩個頁面具有相同的原點,或者會出現以下錯誤:'阻止了源於原始地址「http:// y」的幀的http:// x「。協議,域和端口必須匹配 – supercoco 2014-06-05 15:47:09

8

Vamyip,

嘗試設置一個cookie這是在同一個域中的任何頁面訪問。在其他頁面上,使用javascript計時器檢查cookie值是否已更改,以及何時可以使用它的值並執行操作。

它爲我工作。

相關問題