У меня есть мой pop-up script для chrome-extension, который подсчитывает слова на странице. Поэтому, когда я нажимаю на значок панели инструментов плагина, он начинает загрузку и отправляет сообщение в content-script
, в свою очередь, что content-script
отвечает на информацию о количестве слов на странице.Popup-script в chrome extension отправляет сообщения несколько раз
var Popup = (function() {
function Popup() {
chrome.tabs.query({ active: true, currentWindow: true }, function (tabs) {
var message = {};
chrome.tabs.sendMessage(tabs[0].id, message, function (response) {
alert("!"); // I can see this alert many times (1..4)
var count = response.data;
if (count != 1) {
document.getElementById("word-count").innerText = count;
}
});
});
}
return Popup;
})();
new Popup();
Проблема заключается в том, что sendMessage
является вызовом несколько раз (когда сам всплывающий сценарий загрузки себя только один раз).
Иногда он вызывает sendMessage
1 раз, иногда 2,3,4, но для некоторых страниц (например, сайт переполнения стека) только один раз.
Вопрос: Интересно, почему я мог случиться?
UPDATE:
FYI: У меня есть разрешение только для одного/активной вкладки, здесь вещи в моем manifest.json
:
"permissions": [
"<all_urls>",
"activeTab",
"storage"
]
Содержание раздела сценария:
"content_scripts": [
{
"matches": ["*://*/*"],
"css": ["css/content.css"],
"all_frames" : true,
"js": [
"lib/jquery/jquery.min.js",
"lib/jquery/jquery.min.map",
"src/msg/IMessage.js",
"src/msg/IMessage.ts",
"src/content/IFrame.js",
"src/content/IFrame.ts",
"src/content/Content.js"
]
}
],
Количество раз коррелирует с количеством открываемых вкладок –
Я думаю, что это зависит, но это не правило. Даже когда одна вкладка открыта, я все еще имею эту проблему. – ses
Кстати, нет reaso n для вызова '' нового'' этой функции. Аналогично, вы можете избавиться от анонимной оболочки функций, и все будет хорошо. –