Heim > Fragen und Antworten > Hauptteil
P粉0927785852023-08-25 08:07:08
在 Internet Explorer 8 中,作为参数传递的事件可能为 null,这就是您需要以不同方式访问事件的原因:
在frame.html中:
window.onmessage = function(event) { var evt = event || window.event; evt.source.postMessage('Message from iFrame', evt.origin); };
在main.html上:
window.onmessage = function(event) { var evt = event || window.event; alert(evt.data); };
该事件的触发方式与 Rob W 所呈现的方式相同:
document.getElementById('frameId').contentWindow.postMessage('message','*');
P粉6708387352023-08-25 00:50:36
如果您无法控制被框架的网站,则无法规避跨域策略。
如果您可以控制这两个站点,则可以使用 postMessage
跨域传输数据的方法。一个非常基本的例子:
// 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('','*');