0

Я только что построил хром-расширение. Он изменяет контекстное меню, используя следующие -Chrome Extension не работает в первые несколько раз

В сценарии содержания

document.addEventListener("mousedown", function(event){ 
if(event.button == 2) { 
     if (isNaN(window.getSelection().toString())){ 
      chrome.extension.sendRequest({cmd: "createStringMenu"}); 
     } 
    else { 
     chrome.extension.sendRequest({cmd: "createNumberMenu"});    
    } 
} 

}, true); 

в фоновом режиме

chrome.extension.onRequest.addListener(function(request) { 
if(request.cmd == "createStringMenu") { 
    chrome.contextMenus.removeAll(function() { 
     chrome.contextMenus.create({"title": "Send ' %s ' as SMS ", "contexts": ['selection'],"onclick": send_as_sms}); 
    }); 
} else if(request.cmd == "createNumberMenu") { 
    chrome.contextMenus.removeAll(function() { 
     chrome.contextMenus.create({"title": "Send SMS to %s ", "contexts": ["selection"],"onclick": send_sms_to}); 
    }); 
} 
}); 

Всякий раз, когда расширение запускается в первый раз либо на недавно открытом браузере или когда расширение установлено (и обновлены веб-страницы), меню не создается. то и дальше.

Что мне делать? Что может быть причиной?

+0

Вы имеете в виду первый раз после установки расширения или после перезапуска браузера (он начинается с новой закладки?). Попробуйте добавить некоторые протоколы отладки в оба сценария, чтобы увидеть, что называется, а что нет. – serg

+0

Я имею в виду каждый раз после перезапуска браузера расширение перестает работать для первой попытки. – iamkhush

ответ

0

Это происходит потому, что контекстное меню появляется перед тем, как фоновая страница может изменить содержимое этого контекстного меню. Во второй раз, когда вы щелкнули правой кнопкой мыши, фоновая страница уже изменила содержимое в первый раз, когда вы нажали, поэтому он работает во второй раз.

+0

Yaa, я догадался, но как мне его избежать? – iamkhush