Maison > Questions et réponses > le corps du texte
P粉0927785852023-08-25 08:07:08
Dans Internet Explorer 8, les événements passés en paramètres peuvent être null, c'est pourquoi vous devez accéder aux événements différemment :
Dans frame.html :
window.onmessage = function(event) { var evt = event || window.event; evt.source.postMessage('Message from iFrame', evt.origin); };
sur main.html :
window.onmessage = function(event) { var evt = event || window.event; alert(evt.data); };
L'événement est déclenché de la même manière que celui présenté par Rob W :
document.getElementById('frameId').contentWindow.postMessage('message','*');
P粉6708387352023-08-25 00:50:36
Si vous ne contrôlez pas le cadrage du site Web, vous ne pouvez pas contourner la politique d'origine croisée.
Si vous contrôlez les deux sites, vous pouvez utiliser la méthode postMessage
de transfert de données entre domaines. Un exemple très basique :
// framed.htm: window.onmessage = function(event) { event.source.postMessage(document.body.innerHTML, event.origin); }; // Main page: window.onmessage = function(event) { alert(event.data); }; // Trigger: // <iframe id="myframe" src="framed.htm"></iframe> document.getElementById('myframe').contentWindow.postMessage('','*');