我正在开发一个 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 可以传输数组和对象,但不能传输元素。
那么如何同时传输元素和数据呢?