javascript - 有没有办法通过自定义事件传递额外的数据?

标签 javascript dom google-chrome-extension dom-events userscripts

我需要在两个自主用户脚本之间传递数据 - 最好不要触及 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 中,但它远非无缝。还有其他优雅的解决方案吗?完美需要并且可以实现,我能感觉到。

最佳答案

是的,您可以使用 MessageEventCustomEvent .

示例用法:

//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/

相关文章:

javascript - 如何构建带有循环的字符串?

javascript - 在没有jquery的情况下传递事件对象

javascript - JQuery执行顺序、同步问题

javascript - 如何通过字符串化文本和值来发布选择元素中的所有选项?

html - 从数据库编译动态 HTML 字符串

node.js - 使用 puppeteer 返回窗口对象

javascript - 显示 chrome.storage 中的所有内容

javascript - Bootstrap 3.0 : added 2 sliders to home page both conflicting

javascript - 如何为 XMLHttpRequest 目的在 Javascript 中存储 $_SESSION 变量?

javascript - jquery Ajax方法中的.load()可以用来加载图像吗?