我正在编写一个 chrome 扩展,它用于chrome.windows.onFocusChanged.addListener
执行内容脚本。只要我在不同的 chrome 窗口之间切换,它就可以正常工作,但是,当 Chrome 关闭时,监听器也会被触发。在这种情况下,函数内部的代码会导致扩展崩溃。
我尝试检查未定义,但这似乎不是问题。
代码看起来喜欢这个
chrome.windows.onFocusChanged.addListener(function()
{
var ctab = chrome.tabs.getCurrent;
if(typeof ctab === "undefined")
{
}
else
{
chrome.tabs.executeScript(ctab.id,{file:"inject.js"}); //THIS LINE CRASHES THE APP WHEN I CLOSE THE BROWSER
}
});
我对计划的警报也有类似的问题,它也执行脚本(当我在计划和执行之间关闭浏览器时会导致崩溃)。
function onAlarm(alarm)
{
if (alarm && alarm.name == 'check')
{
var ctab = chrome.tabs.getCurrent;
chrome.tabs.executeScript(ctab.id,{file:"inject.js"}); //CRASH
//more code...
有谁知道如何避免这种崩溃?
编辑:工作示例
清单.json
{
"name": "Rest Extension",
"description": "Set an Artnet Controler to the background collor",
"manifest_version": 2,
"version": "1",
"permissions": ["tabs", "http://*/*", "https://*/*", "background", "alarms"],
"background": {"scripts": ["background.js"]},
"content_scripts": [{"matches": ["http://*/*", "https://*/*"],"js": ["inject.js"]}],
"browser_action":
{
"default_icon": "16x16.png",
"default_popup": "popup.html"
}
}
背景.js
chrome.windows.onFocusChanged.addListener(function()
{
var ctab = chrome.tabs.getCurrent;
if(typeof ctab === "undefined")
{
}
else
{
chrome.tabs.executeScript(ctab.id,{file:"inject.js"}); //THIS LINE CRASHES THE APP WHEN I CLOSE THE BROWSER
}
})
所有其他文件都可以为空(包括inject.js)