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

时间:2016-04-17 21:48:12

标签: javascript google-chrome google-chrome-extension

我刚开始编写扩展程序(和javascript)。每当打开/刷新某个URL时,我都希望在计时器上运行扩展。代码如下。这就是我在网上发现的所有内容。我不确定这是否会一次只运行一个标签。

的manifest.json

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()
    }

main.js

$('#edit_form').on("ajax:success", ...
//             ^-- instead of .bind

1 个答案:

答案 0 :(得分:3)

将您的逻辑移至Event Page

Content Script无法访问chrome.tabs API。

根据best practices when using event pages

  

使用event filters将事件通知限制在您关注的案例中。例如,如果您收听tabs.onUpdated事件,请尝试使用带有过滤器的webNavigation.onCompleted事件(标签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'}]});