Всплывающее окно надстройки Chrome вызывает проблему с текстом значка кнопки надстройки - PullRequest
0 голосов
/ 07 ноября 2019

Я создал простой аддон, который при нажатии делает закладку на активной вкладке в определенной папке. Аддон состоит из двух файлов .js, background.js и popup.js. Background.js выполняет тяжелую работу и отправляет некоторые значения даты в popup.js после создания закладки, которая затем отображает их во всплывающем окне. он также отображает текст «ОК» на кнопке надстройки. Через 2 секунды всплывающее окно и текст кнопки очищаются автоматически. Все отлично работает, закладки и при показе и закрытии всплывающего окна и значка.

Здесь проблема, хотя. Если мне удастся закрыть всплывающее окно в течение этих 2 секунд, щелкнув в любом месте страницы или браузера, текст значка не исчезнет. Пока я снова не нажму кнопку в следующий раз и не буду повторять процесс, позволяя всплывающему окну закрыться на этот раз, текст исчезнет.

Итак, что вызывает это и как я могу это исправить? Мне нужно очистить текст значка, даже если я вручную закрою всплывающее окно в течение этих 2 секунд.

Вот код для popup.js

// Listener calls background 
document.addEventListener("DOMContentLoaded", function () {
    backGround = chrome.extension.getBackgroundPage();    
    backGround.browserOnClickAxn(insertText);
});


// Set text   
function insertText (msg) {
    var message = "To find your saved tabs, look in the folder ";
    message = message + "<br>";
    message = message + "<strong>";
    message = message + "\""+msg+"\"";
    message = message + "</strong>";
    message = message + "<br><br>";
    message = message + " under ";
    message = message + "<br>";
    message = message + "<strong>";
    message = message + "\"Other Bookmarks/BOOKMARKS/VARIOUS\""; 
    message = message + "</strong>";  
    message = message + "<br><br>"; 
    document.getElementById('msg').innerHTML = message;   
    setBadgeText('OK!');
setTimeout(function () {
setBadgeText('');
window.close();
}, 2000);
}


function setBadgeText(text) {
chrome.browserAction.setBadgeBackgroundColor({
  color: '#32cd32'
});
  chrome.browserAction.setBadgeText({
    text: text
  });
}
...