Что теперь представляют собой браузеры, поддерживающие вызов window.postMessage
? Я ищу браузеры, которые поддерживают его изначально, а не из-за взлома iFrame.
Какие браузеры поддерживают вызов window.postMessage?
Ответ 1
Можно ли использовать обмен сообщениями между документами
FF3 +, IE8 +, Chrome, Safari (5?), Opera10 +
Ответ 2
IE8 не разрешает postMessage через окна/вкладки
для дополнительной информации здесь.
Ответ 3
postMessage поддерживается в IE8 + HOWEVER
- Помните, что IE9 и ниже требуют передачи данных в строковой форме, а не как объект.
- IE не хочет, чтобы вы вызывали
postMessage
, как только загружалась страница (я предполагаю, что это связано с тем, что вы отправляете, когда требуется загрузить время).
ИспользуйтеsetTimeout
, чтобы подождать одну или две секунды перед вызовомpostMessage
.
Мне потребовалось несколько часов, чтобы понять это, и IE не выдавал мне никакого сообщения об ошибке, это просто ничего не делало, пока я не добавил setTimeout.
Если вы хотите начать с демонстрации, которая действительно работает в IE, посмотрите этот отличный учебник Илья Кантор
Ответ 4
В последнее время я столкнулся с некоторыми нечетными браузерами/версиями webkit в дикой природе, которые НЕ поддерживали postMessage. Я использовал обнаружение IE (8) как средство поиска альтернативы. Вместо этого я, вероятно, должен был сделать что-то вроде этого:
if(window.postMessage){
console.log('Supports post message');
}
Или, возможно, немного чище:
var pm_is_supported = typeof(window.postMessage) == 'function';