我正在创建Chrome扩展程序,我在html页面中创建名为“STATUS”的自定义事件。
var evt = document.createEvent("Events");
evt.initEvent("STATUS", true, false);
document.dispatchEvent(evt);
我在每个页面加载时调度此事件(STATUS),但是我只在第一页加载时被解雇,以下脚本在chrome扩展名的内容脚本中。
window.addEventListener("STATUS", function( event ) {
console.log( 'init event called' );
chrome.runtime.sendMessage({ action: "STATUS" });
});
答案 0 :(得分:1)
竞争条件问题?它取决于您注入内容脚本的位置(或更确切地说,何时)。
您的事件可能会在侦听器处于活动状态之前触发。尝试将内容脚本的run_at
更改为"document_start"
。
答案 1 :(得分:0)
请使用以下脚本
var event = new CustomEvent( "STATUS", {bubbles: true,cancelable: true} );
document.dispatchEvent(event);
监听器脚本
window.addEventListener("STATUS", function( event ) {
console.log( ' event called' );
});
使用initEvent创建事件已被删除。请参阅以下链接