我正在尝试为某些网站创建自动登录扩展名。
目标是创建一个后台脚本,该脚本在活动选项卡URL每次更改时都会接收更新。
经过多次尝试,我仍然无法成功捕获该事件,因此无法调用我的代码。
我的 manifest.json:
{
"manifest_version": 2,
"name": "OpenU AutoLogin",
"description": "",
"version": "1.0",
"background": {
"scripts": [
"background.js"
]
},
"browser_action": {
"default_icon": "OUAL48.png"
},
"content_scripts": [
{
"matches": ["http://*/*", "https://*/*"],
"js":["OUAL.js"]
}
],
"permissions": [
"tabs",
"activeTab",
"http://*/*", "https://*/*", "<all_url>", "background"
]
}
我的 background.js:(SendScriptIntoActiveTab函数可以正常运行)
chrome.tabs.onActivated.addListener(function(tabId, changeInfo, tab) {
SendScriptIntoActiveTab({code:"console.log(changeInfo);"});
});
function SendScriptIntoActiveTab(code){
chrome.tabs.query({active: true, currentWindow: true}, function(tabs) {
chrome.tabs.executeScript(tabs[0].id,code, function(response) {
});
});
}
但是,令人遗憾的是,当我从后台运行时,什么也没有发生。 有人有任何想法吗?
答案 0 :(得分:1)
chrome.tabs.onActivated
签名错误。另外,您需要使用chrome.tabs.onUpdated
来监听制表符URL的更改。
从文档中
onActivated
当窗口中的活动选项卡更改时触发。请注意,标签的网址 可能在此事件触发时未设置,但您可以听 onUpdated事件,以便在设置URL时得到通知。
要检查活动标签的URL是否已更改:
chrome.tabs.onActivated.addListener(function (activeInfo) {
chrome.tabs.onUpdated.addListener(function (tabId, changeInfo, tab) {
if (activeInfo.tabId === tabId && changeInfo.url) {
console.log(`URL has changed to ${changeInfo.url}`)
}
})
})