我需要在两个自主用户脚本之间传递数据 - 最好不要触及 unsafeWindow
对象 - 我认为使用自定义事件是可行的方法。我想到了这样的事情(为了示例的目的,让我们忽略 MSIE 模型):
addEventListener("customEvent", function(e) {
alert(e.data);
});
var custom = document.createEvent("HTMLEvents");
custom.initEvent("customEvent", true, true);
custom.data = "Some data...";
dispatchEvent(custom);
这在标准 Javascript 环境和一个用户脚本中工作得很好,但是当事件被用户脚本触发并在它之外或另一个用户脚本中捕获时,data
属性是 undefined
在 Chrome 中。我想我可以将传递的数据保存在 sessionStorage
中,但它远非无缝。还有其他优雅的解决方案吗?完美需要并且可以实现,我能感觉到。
最佳答案
是的,您可以使用 MessageEvent
或 CustomEvent
.
示例用法:
//Listen for the event
window.addEventListener("MyEventType", function(evt) {
alert(evt.detail);
}, false);
//Dispatch an event
var evt = new CustomEvent("MyEventType", {detail: "Any Object Here"});
window.dispatchEvent(evt);
关于javascript - 有没有办法通过自定义事件传递额外的数据?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9417121/