eventos event customevent custom attribute javascript dom javascript-events google-chrome-extension userscripts

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);