我需要在两个自主用户脚本之间传递数据 - 理想情况下不接触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
在铬中。我想我可以将传递的数据保存在sessionStorage
,但远非天衣无缝。还有其他优雅的解决方案吗?完美需要并且可以实现,我能感觉到。
是的,您可以使用MessageEvent
or a 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);
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)