Какие браузеры теперь поддерживают вызов window.postMessage?

Каковы все браузеры, которые поддерживают window.postMessage позвони сейчас? Я ищу браузеры, которые поддерживают его изначально, а не через взлом iFrame.

5 ответов

Решение

IE8 не позволяет postMessage через окна / вкладки

http://blogs.msdn.com/b/ieinternals/archive/2009/09/16/bugs-in-ie8-support-for-html5-postmessage-sessionstorage-and-localstorage.aspx

для получения дополнительной информации проверьте здесь

http://www.openajax.org/member/wiki/Browser_Variation_of_the_Hub_Reference_Implementation_%28Illustrative%29

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/

Другие вопросы по тегам