在页面加载/刷新时在后台运行扩展

Running an extension in background on page load/refresh

本文关键字:后台 运行 扩展 加载 刷新      更新时间:2023-09-26

我是编写扩展(和javascript)的新手。每当打开/刷新某个URL时,我希望在计时器上运行一个扩展。代码如下。这是我迄今为止在网上发现的全部。我不确定这是否会一次只运行一个选项卡。

manifest.json

    {
  "manifest_version": 2,
  "name": "Test Plugin",
  "description": "This extension is a test.",
  "version": "1.0",
    "content_scripts": [
    {
      "matches": ["https://www.google.com/*"],
      "js": ["main.js"]
    }
  ],
  "permissions": [
   "activeTab"
   ]
}

main.js

chrome.tabs.onUpdated.addListener( function (tabId, changeInfo, tab) {
  if (changeInfo.status == 'complete' && tab.active) {
    setInterval(mainF, 5000)
  }
})
    function mainF() {
        var getTitle = document.getElementById('title');
        var titleValue = getTitle.Value();
        var fso = new ActiveXObject("Scripting.FileSystemObject");
        var fh = fso.OpenTextFile("test.txt", 8, false, 0);
        fh.WriteLine(titleValue);
        fh.Close()
    }

将您的逻辑移动到事件页面。

内容脚本没有访问chrome.tabs API的权限。

根据使用事件页面时的最佳实践,

使用事件筛选器将事件通知限制为您关心的案例。例如,如果您收听tabs.onUpdated事件,请尝试使用带有筛选器的webNavigationCompleted事件(选项卡API不支持筛选器)。这样,您的事件页面将只为您感兴趣的事件加载。

代码片段看起来像

manifest.json

{
    "manifest_version": 2,
    "name": "Test Plugin",
    "description": "This extension is a test.",
    "version": "1.0",
    "background": {
        "scripts": ["main.js"],
        "persistent": false
    },
    "permissions": [
        "webNavigation"
    ]
}

main.js

chrome.webNavigation.onCompleted.addListener(function(details){
    console.log("Certain url with hostSuffix google.com has been loaded");
}, {url: [{hostSuffix: 'google.com'}]});