2012-08-11 115 views
1

我正在編寫一些診斷工具並試圖爲其創建Chrome擴展。我擁有的是帶有iframe的頁面。 iframe包含位於diffrent domain上的網站。如何以編程方式將內容腳本添加到iframe文檔

我需要的是這兩個網站之間的溝通。我想到的是,我可以簡單地將content script添加到每個文檔(iframe文檔和我的頂部窗口文檔),並通過background script和消息流在它們之間設置通信。

問題是,我不知道iframe中文檔的地址是什麼,用戶可以將多個不同頁面放入iframe。正因爲如此,我不能使用manifest.json文件添加content script,因爲我不知道要將matches屬性放入什麼內容。

我試圖使用chrome.tabs.executeScript方法,並將allFrames標誌設置爲true。當iframe文檔與頂層窗口文檔位於相同的域時,它工作得很好,但是當它位於不同的域時,它不會將content script添加到框架文檔。

的問題很奇怪,因爲如果我知道在設計時的iframe網址,然後我可以添加這些腳本就像從清單文件......

如何添加內容腳本對等文件的iframe情況?

我還會告訴您,我有權訪問我的manifest.json文件中的每個頁面。它像這樣流行:"permissions": ["tabs", "http://*/", "https://*/"]。額外的障礙是我無法在iframe文檔內容中插入,它是第三方代碼。

任何想法?謝謝你的幫助。

+0

您是如何驗證內容腳本未執行x域的? AFAIK,'executeScript' +'allFrames:true'在頂部窗口中執行一個內容腳本,並在其下面顯示所有框架。你試圖解決的實際問題是什麼? – 2012-08-11 13:28:00

+0

我把這個腳本放在'alert(window.location.href)'中,並且只獲得頂部窗口的url。 – 2012-08-11 13:29:06

+0

並且您在頁面完全加載後運行代碼*如果你打開背景頁面,並使用'chrome.tabs.query({active:true});'獲取tabID,然後'chrome.tabs.executeScript(,{code:'alert(location.href); '})',你會得到多少警報? – 2012-08-11 13:33:13

回答

1

正在關注Rob W評論問題是時間。我試圖在加載之前將腳本插入到iframe中。我在iframe上使用onload事件來確定應該調用executeScript方法的時刻。

現在一切正常。感謝Rob。

相關問題