Javascript 在页面加载/刷新时在后台运行扩展
我不熟悉编写扩展(和javascript)。每当打开/刷新某个URL时,我希望在计时器上运行一个扩展。代码如下。这是我在网上找到的所有资料。我不确定一次是否只运行一个选项卡 manifest.jsonJavascript 在页面加载/刷新时在后台运行扩展,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": [
{
"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
。