我有一个 Firefox 扩展,可以修改用户正在查看的页面内容。作为该过程的一部分,扩展需要触发扩展本身添加到页面源的自定义事件。我在将参数传递给该自定义事件时遇到了困难。我究竟做错了什么?
插入head
页面的脚本块:
document.addEventListener("show-my-overlay", EX_ShowOverlay, false, false, true);
function EX_ShowOverlay(e) {
alert('Parameter: ' + e.index);
// ...
}
扩展中的代码:
var event = content.document.createEvent("Events");
event.initEvent("show-my-overlay", true, true);
event['index'] = 123;
content.document.dispatchEvent(event);
事件成功触发,但e.index
未定义。
我设法通过在页面上创建一个元素然后让事件处理程序找到该元素并读取其属性来使其工作,但它并不优雅。我想在没有元素的情况下做到这一点。
编辑:
我也尝试用 触发事件CustomEvent
,但它在处理程序中引发异常:
var event = new CustomEvent('show-my-overlay', { detail: { index: 123 } });
content.document.dispatchEvent(event);
function EX_ShowOverlay(e) {
alert('Parameter: ' + e.detail.index);
// ...
}
访问属性“详细信息”的权限被拒绝