-Это исходный вопрос для потомков-
У меня небольшие проблемы с новым фрагментом кода, который я написал. Я пытаюсь найти 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?