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

Javascript 在页面加载/刷新时在后台运行扩展,javascript,google-chrome,google-chrome-extension,Javascript,Google Chrome,Google Chrome Extension,我不熟悉编写扩展(和javascript)。每当打开/刷新某个URL时,我希望在计时器上运行一个扩展。代码如下。这是我在网上找到的所有资料。我不确定一次是否只运行一个选项卡 manifest.json { "manifest_version": 2, "name": "Test Plugin", "description": "This extension is a test.", "version": "1.0", "content_scripts": [

我不熟悉编写扩展(和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"
   ]
}
{
    "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.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.webNavigation.onCompleted.addListener(function(details){
    console.log("Certain url with hostSuffix google.com has been loaded");
}, {url: [{hostSuffix: 'google.com'}]});
把你的逻辑移到最前面

无法访问
chrome.tabs
API

根据

用于将事件通知限制为您关心的案例。例如,如果您收听
tabs.onUpdate
事件,请尝试将该事件与筛选器一起使用(tabs API不支持筛选器)。这样,您的事件页面将仅为您感兴趣的事件加载

代码片段看起来像

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"
   ]
}
{
    "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.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.webNavigation.onCompleted.addListener(function(details){
    console.log("Certain url with hostSuffix google.com has been loaded");
}, {url: [{hostSuffix: 'google.com'}]});
把你的逻辑移到最前面

无法访问
chrome.tabs
API

根据

用于将事件通知限制为您关心的案例。例如,如果您收听
tabs.onUpdate
事件,请尝试将该事件与筛选器一起使用(tabs API不支持筛选器)。这样,您的事件页面将仅为您感兴趣的事件加载

代码片段看起来像

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"
   ]
}
{
    "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.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.webNavigation.onCompleted.addListener(function(details){
    console.log("Certain url with hostSuffix google.com has been loaded");
}, {url: [{hostSuffix: 'google.com'}]});

我想知道,为什么是活动页面?在每次标签更新时唤醒后台不是一件过分的事情,这是非常重要的frequent@WolfWar,感谢您的关注,我更新了答案,重复了最佳实践,使用事件过滤器和
webNavigation.onCompleted
。我想知道,为什么要使用事件页面?在每次标签更新时唤醒后台不是一件过分的事情,这是非常重要的frequent@WolfWar,感谢您的关注,我更新了答案,重复了最佳实践,使用事件过滤器和
webNavigation.onCompleted