Javascript initEvent不会多次触发

时间:2014-05-24 07:40:29

标签: javascript javascript-events google-chrome-extension

我正在创建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" });
});

2 个答案:

答案 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创建事件已被删除。请参阅以下链接

https://developer.mozilla.org/en-US/docs/Web/Guide/Events/Creating_and_triggering_events#The_old-fashioned_way