мне нужно передавать данные между двумя автономными пользовательскими скриптами - в идеале без прикосновения к объекту unsafeWindow
) - и я подумал, что использование настраиваемых событий будет способом go. Я придумал что-то вроде этого (давайте проигнорируем модель 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
, но это далеко не безупречно. Какие-то другие элегантные решения, господа? Совершенство нужно и его можно достичь, я это чувствую.