Подтвердить что ты не робот

Есть ли способ передачи дополнительных данных через пользовательские события?

Мне нужно передать данные между двумя автономными учетными записями - в идеале, не касаясь объекта 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, но это далеко не просто. Любые другие элегантные решения, господа и джентльмены? Совершенство нужно и может быть достигнуто, я чувствую это.

4b9b3361

Ответ 1

Да, вы можете использовать MessageEvent или CustomEvent.

Пример использования:

//Listen for the event
window.addEventListener("MyEventType", function(evt) {
    alert(evt.detail);
}, false);

//Dispatch an event
var evt = document.createEvent("CustomEvent");
evt.initCustomEvent("MyEventType", true, true, "Any Object Here");
window.dispatchEvent(evt);