如何从网页将数据传输到Firefox扩展

吴国荣

我正在开发Firefox扩展。
并且我已经将一些js注入扩展中的网页中。这些js将执行并将数据传输到扩展。

例如,我注入

function example(srcElement, action) {
   var event = document.createEvent('Events'); 
   event.initEvent('example', true, true);
   var o = {};
   o.actionName = action;
   srcElement.setUserData('exampleData', o, null);
   srcElement.dispatchEvent(event); 
}

同时,我在文档中添加了扩展端的侦听器。
然后,如果执行函数示例,则将调用扩展侦听器并获取数据和srcElement。

问题是:现在不赞成使用setUserData,并且没有方法可以传输数据和元素。
setUserData的替换是

Element.dataset

这个API只能传送字串。

然后我尝试

window.postMessage

该API可以传输数组和对象,但不能传输元素。

那么我该如何传输元素和数据呢?

nmaier

您可以使用CustomEvent,它可以在.detail成员中携带自定义数据

例如,在扩展程序中,您需要:

someWindowOrElement.addEventListener("custom-event-id", function(e) {
  console.log("got event for ", e.originalTarget, "with data", e.detail);
});

并在网站上:

var event = new CustomEvent("custom-event-id", {
  "bubbles": true,
  "detail": {
    "some": "data",
    "number": 1
  }
});
elem.dispatchEvent(event);

或(向后兼容FX <11)

var event = document.createEvent(
  "custom-event-id",
  true, // bubbles
  false, // cancelable
  {
    "some": "data",
    "number": 1
  } // detail
});
elem.dispatchEvent(event);

例如,PDF.js使用它在非特权查看器(网站)和特权扩展部分之间进行通信。

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

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

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

如何检查将某些数据传输到端口?

来自分类Dev

如何将(Mutable)Map传输到Kotlin中的数据传输对象类?

来自分类Dev

将Winform数据传输到Web浏览器(Chrome,Mozila FireFox,Safari等)

来自分类Dev

网页上的Ctrl + S是否使用FTP将网页数据传输到我的硬盘上?

来自分类Dev

通过python将json数据传输到Postgres

来自分类Dev

使用PHP将Json数据传输到MySQL

来自分类Dev

Vuejs。我无法将数据传输到对象

来自分类Dev

如何使用Betty的方法使用AutoMapper将DataAnnotation元数据传输到ViewModel

来自分类Dev

将数据传输到excel时如何处理“旧”日期

来自分类Dev

如何通过ROS将真实感数据传输到其他设备

来自分类Dev

如何将数据传输到Ubuntu-Touch

来自分类Dev

如何将longlat格式的DEM数据传输到utm

来自分类Dev

如何将iOS App生成的数据传输到Macbook?

来自分类Dev

如何每天安全地将本地数据传输到 GCS 存储桶

来自分类Dev

如何将多个数据传输到不同的活动

来自分类Dev

如何使用while循环将php中的数据传输到javascript

来自分类Dev

在哪里或如何查看是否仍通过USB将数据传输到大容量存储

来自分类Dev

如何使用 JWT 将一些数据传输到另一个域

来自分类Dev

如何使用 Winform C# 应用程序通过 USB 电缆将数据传输到 Hololens 设备?

来自分类Dev

ReactJS - 将数据传输到子组件并从组件单击取回数据

来自分类Dev

Arelle使用Python将小程序自动化以将数据传输到Excel

来自分类Dev

将View中的模型数据传输到控制器

来自分类Dev

我可以将CloudKit数据传输到新的Container吗?

来自分类Dev

在WKInterfaceTable的选择行上,将数据传输到Iphone

来自分类Dev

通过图像对象将图像数据传输到GPU?

来自分类Dev

您可以将数据传输到pairwise.t.test吗?

来自分类Dev

Tkinter将数据传输到另一个窗口

来自分类Dev

将数据传输到另一个ASP.net页

来自分类Dev

从Windows 8.1中的Windows托管磁盘将数据传输到Ubuntu托管磁盘

Related 相关文章

  1. 1

    如何检查将某些数据传输到端口?

  2. 2

    如何将(Mutable)Map传输到Kotlin中的数据传输对象类?

  3. 3

    将Winform数据传输到Web浏览器(Chrome,Mozila FireFox,Safari等)

  4. 4

    网页上的Ctrl + S是否使用FTP将网页数据传输到我的硬盘上?

  5. 5

    通过python将json数据传输到Postgres

  6. 6

    使用PHP将Json数据传输到MySQL

  7. 7

    Vuejs。我无法将数据传输到对象

  8. 8

    如何使用Betty的方法使用AutoMapper将DataAnnotation元数据传输到ViewModel

  9. 9

    将数据传输到excel时如何处理“旧”日期

  10. 10

    如何通过ROS将真实感数据传输到其他设备

  11. 11

    如何将数据传输到Ubuntu-Touch

  12. 12

    如何将longlat格式的DEM数据传输到utm

  13. 13

    如何将iOS App生成的数据传输到Macbook?

  14. 14

    如何每天安全地将本地数据传输到 GCS 存储桶

  15. 15

    如何将多个数据传输到不同的活动

  16. 16

    如何使用while循环将php中的数据传输到javascript

  17. 17

    在哪里或如何查看是否仍通过USB将数据传输到大容量存储

  18. 18

    如何使用 JWT 将一些数据传输到另一个域

  19. 19

    如何使用 Winform C# 应用程序通过 USB 电缆将数据传输到 Hololens 设备?

  20. 20

    ReactJS - 将数据传输到子组件并从组件单击取回数据

  21. 21

    Arelle使用Python将小程序自动化以将数据传输到Excel

  22. 22

    将View中的模型数据传输到控制器

  23. 23

    我可以将CloudKit数据传输到新的Container吗?

  24. 24

    在WKInterfaceTable的选择行上,将数据传输到Iphone

  25. 25

    通过图像对象将图像数据传输到GPU?

  26. 26

    您可以将数据传输到pairwise.t.test吗?

  27. 27

    Tkinter将数据传输到另一个窗口

  28. 28

    将数据传输到另一个ASP.net页

  29. 29

    从Windows 8.1中的Windows托管磁盘将数据传输到Ubuntu托管磁盘

热门标签

归档