加载时窗口调度事件不适用于嵌入式脚本

时间:2019-10-13 22:24:19

标签: javascript

我有一个简单的内联hbs脚本,该脚本应在窗口加载时广播自定义事件:

<script>
    window.onload = function () {
        var evt = new Event('global:initialize-alert-banners');
        window.dispatchEvent(evt, function(e) {
            console.log('why doesnt this broadcast?', e)
        });
    };
</script>

使用Node调试器,我可以看到evt变量已成功创建,但是当需要在窗口上分派事件时,什么也不会触发。任何帮助将不胜感激。

2 个答案:

答案 0 :(得分:2)

EventTarget.dispatchEvent()方法不接受回调。在调度事件之前,您需要向窗口添加事件侦听器:

window.addEventListener('global:initialize-alert-banners', () => console.log('global:initialize-alert-banners dispatched'))

window.onload = function() {
  var evt = new Event('global:initialize-alert-banners');
  window.dispatchEvent(evt);
};

答案 1 :(得分:0)

您可以附加EventListener

window.addEventListener('load',()=>{

    //code

});