無論我做什麼,我似乎都無法做到這一點。讓我用一個非常簡單的示例擴展來演示。這裏是manifest.json
:我content_scripts
條目匹配all_urls
,這(根據Google documentation)如何讓content_scripts在file中執行:/// Chrome擴展中的URL
{
"manifest_version": 2,
"name": "Sample Of Content Script",
"description": "Changes the background of a page pink",
"version": "1.0",
"content_scripts": [
{
"matches": [ "<all_urls>" ],
"js": [ "changer.js" ]
}
],
"permissions": [
"webNavigation"
],
"background": {
"scripts": [ "background.js" ]
}
}
通知應匹配file:///
網址。
的background.js
:
(function (chrome) {
'use strict';
chrome.webNavigation.onCompleted.addListener(function (details) {
chrome.tabs.sendMessage(details.tabId, {
action: 'changeBackground',
color: 'pink'
});
});
})(chrome);
而且changer.js
(內容腳本):
(function (chrome) {
'use strict';
chrome.runtime.onMessage.addListener(function (request) {
if (request.action !== 'changeBackground') { return; }
document.body.style.background = request.color;
});
})(chrome);
本擴展已被髮布在Chrome網上應用店,所以你可以看到結果在行動:
https://chrome.google.com/webstore/detail/sample-of-content-script/bkekbfjgkkineeokljnobgcoadlhdckd
這是一個非常簡單的擴展。導航到一個頁面,它將頁面的背景變成粉紅色。不幸的是,它不適用於任何file:///
網址。 changer.js
腳本未加載到頁面中,並且沒有任何反應。
額外的信息
- 它實際上似乎在開發模式的正在開發的擴展運行時工作得很好。從文件系統加載的頁面變成粉紅色。
- 我嘗試使用
chrome.tabs.executeScript()
而不是將腳本放入清單。這更明顯地失敗了,說我沒有請求修改清單中的file:///
網址的權限。 - 我將
"file:///*/*"
加到manifest.json
的permissions
部分。這似乎與chrome.tabs.executeScript()
一致,但Chrome網上應用店拒絕了該擴展程序,稱file:///
權限不被允許。 - 我恢復爲
manifest.json
中的content_script
部分,並嘗試將"file:///*/*
添加到清單中的matches
部分。再次,這在開發版本中有效,但是當我將其上傳到Chrome網上應用店並安裝它時,它不起作用。
非常感謝。我沒有注意到這個細節。 – danBhentschel