我試圖創建一個jQuery的彈出式窗口在任何頁面上,當用戶按下我的Chrome擴展時按需求觸發。chrome擴展名:注入引用我正在注入的腳本的代碼 - 爲什麼它失敗?
我有設置爲權限[ 「選項卡」, 「HTTP:// /」, 「https://開頭/」]
我有試圖做下列背景頁:
chrome.browserAction.onClicked.addListener(function(tab) {
//chrome.tabs.executeScript(null, { code: "alert(document.title);" }, null);
chrome.tabs.executeScript(null, {file: "demo.js"}, null);
chrome.tabs.executeScript(null, { code: "document.body.appendChild(document.createElement('script')).src='demo.js'" }, null);
});
如果我取消註釋警報,它會在我點擊擴展圖標時出現。 但是,儘管如此,它並沒有做任何事情。
任何想法爲什麼失敗?
UPDATE 我設法通過引用一個url而不是本地資源(demo.js)來使它工作。 現在的代碼,這樣的作品,看起來像這樣:
chrome.tabs.executeScript(tab.id, { code: "document.body.appendChild(document.createElement('script')).src='http://iamnotagoodartist.com/stuff/wikiframe.js'" }, null);
我的地方「demo.js」是從該URL的內容的副本反正。 我不確定爲什麼當我參考本地文件時不工作...?
太棒了,非常感謝!\ n
您是否也知道如何在iframe網站(例如gmail)中運行它?我找到了「all_frames」:真正的參考,但它始終是內容腳本注入,而我只按需要注入 – Andrei
你只需要在第二個參數對象中設置allFrames屬性爲true(請參閱第二個鏈接)注意,你將無法將腳本注入到通過JavaScript創建的框架中 –
tx a很多!我仍然在gmail中得到安全警告,但它的工作原理 – Andrei