javascript - 加载时的窗口调度事件不适用于内联脚本

标签 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 变量已成功创建,但是当需要在窗口上分派(dispatch)事件时,没有任何触发。非常感谢任何帮助。

最佳答案

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

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);
};

关于javascript - 加载时的窗口调度事件不适用于内联脚本,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58368240/

相关文章:

javascript - 每 4 个字符后留出一个空格后编辑前一个字符

JavaScript - 按嵌套值对 JSON 对象进行排序

javascript - 通过 webgl 中的 bin 文件加载模型?

javascript - HTTP 访问控制 (CORS) 能否阻止其他域运行我的脚本?

javascript - 为什么 Google Maps API DirectionsService 不显示最佳路线?

javascript - typescript window.setInterval() 无法正常工作

javascript - 对于列标题是否有与此类似的相应行 'header' 方法?

javascript - 变量数组+正则表达式不能一起工作?

JavaScript 在参数中传递新数组

javascript - FabricJS - 锁定高度并仅调整宽度?