Quels sont tous les navigateurs qui prennent en charge l'appel window.postMessage
maintenant? Je recherche des navigateurs qui le prennent en charge de manière native, et non via un piratage iFrame.
Réponses
Trop de publicités?Puis-je utiliser la messagerie entre documents
FF3 +, IE8 +, Chrome, Safari (5?), Opera10 +
postMessage est pris en charge dans IE8+ CEPENDANT
- Rappelez-vous que IE9 et au-dessous de besoin de données pour être passé en la forme d'une chaîne et non pas comme un objet.
- IE n'est pas comme vous appelez
postMessage
dès que le chargement de la page (je suppose que cela a à voir avec l'iframe que vous envoyez à besoin de temps de charge).
Utiliser unsetTimeout
à attendre une ou deux secondes avant d'appelerpostMessage
.
Il m'a fallu des heures pour comprendre cela et IE n'était pas de me donner de message d'erreur, c'était juste silencieusement de ne rien faire jusqu'à ce que j'ai ajouté le setTimeout.
Si vous souhaitez commencer avec une démo qui fait le travail dans IE, découvrez cette chouette tutoriel par Ilya Kantor
Pour ce qui en vaut la peine, j’ai rencontré des versions / navigateurs Webkit étranges qui ne prenaient PAS en charge postMessage. J'utilisais la détection IE (8) comme moyen de rechercher une alternative. Au lieu de cela, j'aurais probablement dû faire quelque chose comme ceci:
if(window.postMessage){
console.log('Supports post message');
}
Ou probablement un peu plus propre:
var pm_is_supported = typeof(window.postMessage) == 'function';