簡體   English   中英

chrome擴展以在頁面加載時運行腳本

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM