0
我使用新的webextension標準構建Firefox擴展。javascript addEventListener和runtime.onMessage.addListener
當用戶點擊頁面上的任何位置時,我想讓點擊處於待機狀態幾毫秒,而另一個功能正在後臺腳本中執行任務。
這裏是我的代碼部分:
內容腳本:
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);
背景腳本:
browser.runtime.onMessage.addListener(MsgListener);
function MsgListener(msg)
{
if (msg.msg == 'doWork')
{
...
browser.tabs.sendMessage(TheTabId, {msg: 'can_continue'});
}
}
的問題是,內容腳本不接收點擊事件未決時,can_continue
消息,所以while (! CanContinue)
從未發佈。
請注意,如果我測試它不在點擊事件過程中,則會正確接收消息。
謝謝你,我會試試這種方式 – user3429139