Je construis une extension Firefox en utilisant la nouvelle norme de webextension. Lorsque l'utilisateur clique n'importe où sur la page, je souhaite mettre le clic en veille pendant quelques millisecondes pendant qu'une autre fonction exécute une tâche dans le script d'arrière-plan.javascript addEventListener et runtime.onMessage.addListener
Voici une partie de mon code:
script contenu :
var CanContinue = false;
browser.runtime.onMessage.addListener(MsgListener);
function MsgListener(request, sender, sendResponse)
{
if (request.msg == 'can_continue')
CanContinue = true;
}
function ClickDetected(event)
{
browser.runtime.sendMessage({"msg": "doWork"});
while (! CanContinue);
}
window.addEventListener("click", function(event) {
ClickDetected(event);
}, true);
script fond :
browser.runtime.onMessage.addListener(MsgListener);
function MsgListener(msg)
{
if (msg.msg == 'doWork')
{
...
browser.tabs.sendMessage(TheTabId, {msg: 'can_continue'});
}
}
Le problème est que le script de contenu ne reçoit pas le message can_continue
alors que l'événement click est en attente, de sorte que le while (! CanContinue)
ne jamais publier.
Notez que le message est correctement reçu si je le teste en dehors du processus d'événement click.
Merci, je vais essayer de cette façon – user3429139