我刚开始编写扩展程序(和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
答案 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'}]});