使用Firefox扩展中的属性触发自定义事件

埃德加

我有一个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);
    // ...
}

拒绝访问属性“详细信息”的权限

nmaier

您不能跨安全边界访问“ expandos”(在本机原型对象上定义的其他属性)。在这种情况下,安全边界位于完全特权的chrome(附加)代码和非特权的网站代码之间。

因此,您需要使用“标准”内容传递数据。CustomEvent东西会做,但是你的代码是错误的。您必须initCustomEvent()正确调用构造函数

var event = new CustomEvent('show-my-overlay', { detail: { index: 123 } });
content.document.dispatchEvent(event);

另一种选择是postMessageAPI

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

在ribs.js中触发自定义事件

来自分类Dev

在UI线程中触发自定义事件

来自分类Dev

在ribs.js中触发自定义事件

来自分类Dev

jQuery触发自定义事件

来自分类Dev

`mousemove`并触发自定义事件

来自分类Dev

如何在原始Javascript中创建,添加自定义属性并触发自定义事件

来自分类Dev

从自定义组件触发自定义事件并在viewController中处理事件

来自分类Dev

如何从Polymer Dart触发自定义事件?

来自分类Dev

在console.log上触发自定义事件

来自分类Dev

如何在角度触发自定义事件

来自分类Dev

jQuery nestedSortable:如何触发自定义事件?

来自分类Dev

如何使用自定义事件(特别是自定义dataTransfer属性)触发事件?

来自分类Dev

如何触发自定义事件以触发部分表单验证?

来自分类Dev

如何触发自定义事件以触发部分表单验证?

来自分类Dev

如何在Sails.js v0.11中触发自定义套接字事件?

来自分类Dev

如何在fabric.js的画布上触发自定义事件?

来自分类Dev

在没有jQuery的情况下触发自定义事件

来自分类Dev

添加新行时,jQuery 在表上触发自定义事件

来自分类Dev

如何在生命周期事件上触发自定义函数?

来自分类Dev

在WCF的自定义属性中引发自定义异常

来自分类Dev

自定义事件触发

来自分类Dev

如何使用kommunicate.io从Dialogflow机器人触发自定义的欢迎消息?

来自分类Dev

使用 Dialogflow 触发自定义警报短语(意图)

来自分类Dev

未触发自定义搜索的展开

来自分类Dev

引发自定义错误时触发 $stateChangeError

来自分类Dev

使用自定义事件对象触发事件处理程序

来自分类Dev

如何从Dart扩展dll中引发自定义错误?

来自分类Dev

在.NET Framework中引发自定义事件的不同方法

来自分类Dev

在.NET Framework中引发自定义事件的不同方法

Related 相关文章

  1. 1

    在ribs.js中触发自定义事件

  2. 2

    在UI线程中触发自定义事件

  3. 3

    在ribs.js中触发自定义事件

  4. 4

    jQuery触发自定义事件

  5. 5

    `mousemove`并触发自定义事件

  6. 6

    如何在原始Javascript中创建,添加自定义属性并触发自定义事件

  7. 7

    从自定义组件触发自定义事件并在viewController中处理事件

  8. 8

    如何从Polymer Dart触发自定义事件?

  9. 9

    在console.log上触发自定义事件

  10. 10

    如何在角度触发自定义事件

  11. 11

    jQuery nestedSortable:如何触发自定义事件?

  12. 12

    如何使用自定义事件(特别是自定义dataTransfer属性)触发事件?

  13. 13

    如何触发自定义事件以触发部分表单验证?

  14. 14

    如何触发自定义事件以触发部分表单验证?

  15. 15

    如何在Sails.js v0.11中触发自定义套接字事件?

  16. 16

    如何在fabric.js的画布上触发自定义事件?

  17. 17

    在没有jQuery的情况下触发自定义事件

  18. 18

    添加新行时,jQuery 在表上触发自定义事件

  19. 19

    如何在生命周期事件上触发自定义函数?

  20. 20

    在WCF的自定义属性中引发自定义异常

  21. 21

    自定义事件触发

  22. 22

    如何使用kommunicate.io从Dialogflow机器人触发自定义的欢迎消息?

  23. 23

    使用 Dialogflow 触发自定义警报短语(意图)

  24. 24

    未触发自定义搜索的展开

  25. 25

    引发自定义错误时触发 $stateChangeError

  26. 26

    使用自定义事件对象触发事件处理程序

  27. 27

    如何从Dart扩展dll中引发自定义错误?

  28. 28

    在.NET Framework中引发自定义事件的不同方法

  29. 29

    在.NET Framework中引发自定义事件的不同方法

热门标签

归档