Firefox - Javascript - window.event не выживает, проходит в context.apply()

-Это исходный вопрос для потомков-

У меня небольшие проблемы с новым фрагментом кода, который я написал. Я пытаюсь найти iframe, в котором живет окно, в котором отправлено сообщение, предполагая, что оно вообще из iframe. Соответствующий код:

var getContainingFrame = function(source){
    var frames = document.getElementsByTagName('iframe');
    for (var i = 0; i < frames.length; ++i) {
        if (frames[i].contentWindow === source) {
            return frames[i];
        }
    }
    return false;
}
var postMessageReceivedCallback = function(event){
    getContainingFrame(event.source);
}
window.addEventListener("message", postMessageReceivedCallback, false);

Отлично работает в Chrome/Safari, однако Firefox каждый раз соответствует первому frame. (iframe.contentWindow === window независимо от того, какой window). На самом деле я изначально нашел, как это сделать, из другого сообщения здесь, хотя они не упоминают проблему с Firefox.

Каждый iframe имеет другой src.

Есть ли другой метод для их сопоставления? Я сделал что-то явно неправильное?

Не используйте jQuery, пожалуйста.

Спасибо

Лучший вопрос:

Мое событие передавалось через function.apply(window, params) через объект окна, ожидая, что window.event будет доступен в функции, к которой оно было применено - это работает в Chrome/Safari, хотя в FF это не так. Как передать событие в FF?


person Randy Hall    schedule 27.11.2013    source источник
comment
Являются ли фреймы кросс-происхождения? Любая причина, по которой вы не можете проверить src напрямую?   -  person Reuben Morais    schedule 27.11.2013
comment
@ReubenMorais да, они кросс-происхождения.   -  person Randy Hall    schedule 27.11.2013
comment
Я только что попробовал это, и, насколько я могу судить, он отлично работает. Можете ли вы дать ссылку на полную страницу, которая показывает проблему для вас?   -  person Boris Zbarsky    schedule 28.11.2013
comment
@BorisZbarsky Поскольку он находится на внутреннем сервере за уровнями безопасности, я не могу. Я работаю над тем, чтобы получить более надежный пример, работающий на скрипке. Хотя дальнейшее тестирование показывает, что ссылка на окно отправки событий может быть вообще потеряна... Я передаю это через другие функции, пример выше - это только основные моменты. Более скоро.   -  person Randy Hall    schedule 28.11.2013
comment
@RandyHall Хорошо, дай мне знать!   -  person Boris Zbarsky    schedule 28.11.2013
comment
Невозможно воспроизвести: jsfiddle.net/P9bHr/1   -  person Rob W    schedule 28.11.2013
comment
@BorisZbarsky Хорошо, похоже, что-то еще, что я делал, вызвало это. Объект события в окне/контексте при передаче указанного контекста в function.apply(context, params) (не показан выше) не сохранялся в FF. Я вручную настраивал объект события для учета этого, который я никогда не очищал, вызывая путаницу - ссылка на объект события плавала из более раннего сообщения на страницу. Я проясню вопрос.   -  person Randy Hall    schedule 02.12.2013