javascript - customevent - ¿Hay alguna manera de pasar datos adicionales a través de eventos personalizados?
title css (2)
Necesito pasar datos entre dos usuarios autónomos, idealmente sin tocar el objeto unsafeWindow
, y pensé que usar eventos personalizados sería el camino a seguir. Pensé en algo como esto (ignoremos el modelo MSIE a los fines del ejemplo):
addEventListener("customEvent", function(e) {
alert(e.data);
});
var custom = document.createEvent("HTMLEvents");
custom.initEvent("customEvent", true, true);
custom.data = "Some data...";
dispatchEvent(custom);
Esto funciona muy bien en el entorno javascript estándar y dentro de un userScript, pero cuando el usuario desencadena el evento y lo atrapa fuera o dentro de otro usercript, la propiedad de data
undefined
está undefined
en cromo. Supongo que podría guardar los datos pasados en sessionStorage
, pero está lejos de ser perfecto. ¿Alguna otra solución elegante, señores y señoras? La perfección necesita y se puede lograr, puedo sentirlo.
Sí, puede usar un MessageEvent
o un CustomEvent
.
Ejemplo de uso:
//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);
pasar el objeto con más detalles como atributos:
var event = new CustomEvent(''build'', { ''detail1'': "something", detail2: "something else" });
function eventHandler(e) {
log(''detail1: '' + e.detail.detail1);
log(''detail2: '' + e.detail.detail2);
}
https://developer.mozilla.org/en-US/docs/Web/Guide/Events/Creating_and_triggering_events