chrome.windows.onFocusChanged.addListener
コンテンツ スクリプトの実行に使用する chrome 拡張機能を作成しています。これは、異なるクロム ウィンドウを切り替える限り正常に機能しますが、Chrome を閉じたときにもリスナーが起動されます。その場合、関数内のコードが拡張機能のクラッシュにつながります。
undefined のチャッキングを試みましたが、それは問題ではないようです。
コードはこれが好きです
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"
}
}
background.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 を含む)