私はクロム拡張を作成しています。私の背景のスクリプトにはaddListener
がありますが、それはonUpdated.addListener
であっても2回以上発生しています。 changeInfo.status == 'complete'
がいつチェックされるかを確認するif文を追加しましたが、何度も何度も起動します。私はGoogle Chromeにこれと関係していたバグがあることを知っていますが、それは数年前です。どんな解決策ですか?前もって感謝します。ここでchrome.tabs.onUpdated.addListenerが複数回発生する
は私background.jsです:ここでは
// Get the behavior of the plugin; the default is set to "onClick", the other option is "alwaysOn"
chrome.storage.sync.get({
extensionBehavior: 'onClick'
}, function(items) {
if(items.extensionBehavior == 'onClick'){
chrome.browserAction.onClicked.addListener(function() {
// When the extension icon is clicked, send a message to the content script
chrome.tabs.query({active: true, currentWindow: true}, function(tabs) {
chrome.tabs.sendMessage(tabs[0].id, {"message": tabs[0].url}, function(response){});
});
});
}
else {
chrome.browserAction.setBadgeText({text:"auto"});
chrome.tabs.onCreated.addListener(function (tab) {
chrome.tabs.onUpdated.addListener(function (tabId, changeInfo, tab) {
if (tab.status == 'complete') {
chrome.tabs.sendMessage(tabId, {"message": tab.url}, function(response){});
}
});
});
}
});
は私のmanifest.jsonを次のとおりです。
{
"manifest_version": 2,
"name": "My Extension",
"version": "1.2.1",
"description": *redacted for privacy reasons*,
"content_scripts": [{
"matches": [
"<all_urls>"
],
"js": ["content_script.js", "jquery-2.2.4.js"]
}
],
"background": {
"scripts": ["background.js"]
},
"options_ui": {
"page": "options.html"
},
"browser_action": {
"default_icon": "blue-logo.png"
},
"permissions": [
"storage",
"activeTab",
"tabs"
]
}
私は私のonCreated
のonUpdated
内部を持っているなぜあなたは迷っている場合ので、それはですonCreatedは単独では機能しませんでした。以前に作成されたタブも更新されました(タブを作成し、URLに移動してからそのタブで別のURLに移動するなど)。私は最初にchangeInfo.status
をチェックしていましたが、それが動作しないときに私はtab.status
に変更しましたが、これらは同じ変数ではありませんか?どちらも同じような行動を起こしているようです(発砲しないと発砲します)。
質問、私は新しいタブを作成した場合、リスナーがあるため 'onCreated'の火災ではなくなりますでしょう新しく作成されたタブの読み込みが完了したら、 'onUpdated'のために起動しますか? @mgiuffrida EDIT:Nevermind!それは魅力のように機能します、ありがとう! –