Какие браузеры теперь поддерживают вызов window.postMessage?
Каковы все браузеры, которые поддерживают window.postMessage
позвони сейчас? Я ищу браузеры, которые поддерживают его изначально, а не через взлом iFrame.
5 ответов
Могу ли я использовать обмен сообщениями между документами
FF3+, IE8+, Chrome, Safari(5?), Opera10+
IE8 не позволяет postMessage через окна / вкладки
для получения дополнительной информации проверьте здесь
postMessage поддерживается в IE8+ ОДНАКО
- Помните, что IE9 и ниже требуют, чтобы данные передавались в виде строки, а не как объект.
- IE не любит, когда ты звонишь
postMessage
как только страница загрузится (я предполагаю, что это связано с размещаемым вами фреймом, которому нужно время для загрузки).
ИспользоватьsetTimeout
подождать одну или две секунды перед звонкомpostMessage
,
Мне потребовались часы, чтобы понять это, и IE не выдавал мне сообщений об ошибках, он просто молча ничего не делал, пока я не добавил setTimeout.
Если вы хотите начать с демонстрации, которая действительно работает в IE, посмотрите этот изящный урок от Ильи Кантора
В последнее время я столкнулся с некоторыми странными браузерами / версиями webkit, которые НЕ поддерживали postMessage. Я использовал IE(8) в качестве средства для поиска альтернативы. Вместо этого я, вероятно, должен был сделать что-то вроде этого:
if(window.postMessage){
console.log('Supports post message');
}
Или, вероятно, немного чище:
var pm_is_supported = typeof(window.postMessage) == 'function';
Все последние браузеры поддерживают, например, IE 11, Edge, Firefox 57+, Dafari 11+, iOS Safari 10.2+, Opera mini, Chrome для Android, UC Browser и т. Д.
https://caniuse.com/