我的Chrome擴展程序未使用content_scripts
,因爲我不想將代碼注入每個頁面。相反,當用戶點擊按鈕時,彈出窗口打開並將代碼注入頁面。「about:blank」頁面的Chrome擴展權限
因此,在manifest.json
有權限塊:
"permissions": [
"activeTab"
]
而在popup.js
有這樣的代碼:
chrome.windows.getCurrent(function(win) {
chrome.tabs.query({
'windowId': win.id,
'active': true
}, function(tabArray) {
// inject css & js only on initial click
chrome.tabs.executeScript(null, {
code : 'document.querySelector("body").classList.contains("_myExtension_code_injected")'
}, function(result) {
if (result && !result[0]) {
chrome.tabs.insertCSS(null, {
file: 'myExtension.css'
});
chrome.tabs.executeScript(null, {
file: 'myExtension.js'
}, function(){
chrome.tabs.executeScript(null, {
code: 'myExtension.init();'
});
});
}
});
});
});
問題是有些網站打開一個彈出窗口,附加信息。該彈出頁面的URL是"about:blank"
。如果我嘗試初始化的延長,我在控制檯中看到這樣的信息:
未選中runtime.lastError在運行tabs.executeScript:無法訪問URL的內容輸入「about:空白」。擴展清單必須請求訪問此主機的權限。
我看不到添加"about:blank"
頁面到permissions
頁面的方法。我真的不想開始使用content_scripts
,所以我可以設置match_about_blank
設置。
我已經嘗試添加"about:blank"
和"about:*
到permission
和我得到的是安裝錯誤。
嘗試安裝此擴展程序時出現警告: 權限'about:*'未知或URL模式格式錯誤。
有沒有解決方法?
更新:Here is a gist with everything you'll need。包含jsbin演示的鏈接,但問題不在該網站專門。該擴展程序最初是通過選擇打印電子郵件的yahoo郵件彈出窗口進行測試的。
你就不能對證'有關'windows.location.href'值:blank'執行任何代碼之前? – Mathlight
Chrome因爲需要權限而阻止代碼注入。我列入了上面顯示的錯誤。 – Mottie
我明白那一部分。但是我的意思是如果可能的話,在注射部位進行檢查。 (如果可能的話,我不知道這是否足夠) – Mathlight