2016-07-28 75 views
0

我打開一個新標籤網站通過JavaScript在瀏覽器控制檯寫下面的代碼:如何訪問window.open打開的窗口的文檔對象?

var win = window.open("http://staging.redefinewebs.in/wildgoose-const/wp-admin/post-new.php", "mywin", ''); 

現在我想在新打開的選項卡中添加一個字段中的文本。但爲此,我需要訪問win.document。當我在控制檯寫win.document我收到以下錯誤:如果我在打開新標籤其他網站

Error: Permission denied to access property "document"

這個錯誤不會出現。所以,

如何訪問在window.open的新選項卡中打開的窗口的文檔對象?

+0

您不能寫入遠程站點上的文檔,除非它專門寫了允許您這樣做,該頁面沒有,所以您不能。唯一的選擇是用服務器端腳本代理頁面。 –

回答

3

How to get access of document object of a window opened in a new tab with window.open?

如果窗口從不同來源打開一個文檔,你不這樣做;由於Same Origin Policy,跨瀏覽器訪問被瀏覽器拒絕。從你的問題中的錯誤,這似乎是這種情況。

如果該窗口包含來自同一起源的文檔,則可以按照您所示的方式訪問它;但請注意,在您致電window.open後,它可能仍會立即加載,並且您可能需要等待它完成,或許使用DOMContentLoaded事件。

+0

我以某種方式成功地在我登錄時使用gmail.com訪問文檔。 – user31782

+0

@ user31782:我懷疑是觀察錯誤(例如,您可能正在使用gmail.com頁面的控制檯工作?)。 –

+0

不需要。如果只是在Firefox中打開一個新的空白標籤,並用window.open打開gmail,我可以訪問它的文檔對象。可能我的新標籤頁是與Google服務器關聯的? – user31782

2

如果違反同源策略,則無法訪問子窗口的DOM。

只有滿足以下三個條件,才能訪問子窗口的DOM。

  • 兩個窗口具有相同的協議(HTTP/HTTPS)
  • 兩個窗口具有相同的主機(google.com和news.google.com是不同的)
  • 兩個窗口具有相同的端口(google.com: 80和google.com:443是不同的)
相關問題