Rumah > Soal Jawab > teks badan
P粉0927785852023-08-25 08:07:08
Dalam Internet Explorer 8, peristiwa yang diluluskan sebagai parameter mungkin null, itulah sebabnya anda perlu mengakses acara secara berbeza:
Dalam frame.html:
window.onmessage = function(event) { var evt = event || window.event; evt.source.postMessage('Message from iFrame', evt.origin); };
di main.html:
window.onmessage = function(event) { var evt = event || window.event; alert(evt.data); };
Acara dicetuskan dengan cara yang sama seperti yang disampaikan oleh Rob W:
document.getElementById('frameId').contentWindow.postMessage('message','*');
P粉6708387352023-08-25 00:50:36
Jika anda tidak mengawal tapak web yang dibingkaikan, anda tidak boleh memintas dasar silang asal.
Jika anda mempunyai kawalan ke atas kedua-dua tapak, anda boleh menggunakan kaedah postMessage
untuk memindahkan data merentas domain. Contoh yang sangat asas:
// 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('','*');