[英]chrome extension to run script on page load
我正在編寫一個chrome擴展,它應該能夠在加載后立即在該頁面上運行腳本。 我實現了該功能,以便在單擊擴展圖標時運行代碼,但是當我添加代碼以在頁面加載時運行該腳本時,它無法正常工作
清單文件
{
"name": "",
"description": "",
"version": "1.0",
"permissions": [
"activeTab",
"tabs"
],
"background": {
"scripts": ["background.js"],
"persistent": false
},
"browser_action": {
"default_title": "",
"default_icon": "6a00e3982283618833019affd3c028970c.png"
},
"manifest_version": 2
}
js文件:
chrome.tabs.onUpdated.addListener(
function ( tabId, changeInfo, tab )
{
if ( changeInfo.status === "complete" )
{
chrome.tabs.executeScript({
code: "console.log('dsff');"
});
}
});
但是,盡管如此,當用戶在選項卡中更改頁面時,我的js仍未運行
如果您注冊了chrome.tabs.executeScript(...)
的回調以捕獲任何錯誤,例如:
chrome.tabs.executeScript({ code: "console.log('dsff');" }, function() {
if (chrome.runtime.lastError) {
console.log("ERROR: " + chrome.runtime.lastError.message);
}
});
你會注意到以下錯誤:
錯誤:無法訪問網址“...”的內容。 擴展清單必須請求訪問此主機的權限。
因此,您需要將相應的主機匹配模式添加到清單中的permissions
列表中。 例如,為了能夠將代碼注入任何http/https
頁面:
"permissions": ["*://*/*"]
此外,如果省略chrome.tabs.executeScript(...)
的tabId
參數,它將應用於當前活動的選項卡(可能會推遲觸發onUpdated
事件的選項卡)。 所以,還要進行以下更改:
chrome.tabs.executeScript(tab.id, { code: "console.log('dsff');" }, function() {...
首先,為什么要為內容和后台腳本使用相同的文件(background.js)。
內容腳本不能使用chrome。* api
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.