搜索

首页  >  问答  >  正文

iframe跨域问题

<p>假设我有一个名为 example.com 的网站,其中 iframe 嵌入了 iframe.net 域,现在我想读取 iframe 的内容并传递一些参数来显示文本消息。喜欢用用户名嗨。 </p> <p>现在的问题是这无法在两者之间建立连接,甚至无法获取我使用以下方法的 iframe 的innerHTML</p> <pre class="brush:php;toolbar:false;">document.getElementById('myframe').contentWindow.document.body.innerHTML;</pre> <p>它抛出错误“访问属性的权限被拒绝”</p> <p>有谁知道如何跨域平台读写</p>
P粉939473759P粉939473759534 天前559

全部回复(2)我来回复

  • P粉092778585

    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);
    };

    ma​​in.html上:

    window.onmessage = function(event) {
       var evt = event || window.event;
       alert(evt.data);
    };

    该事件的触发方式与 Rob W 所呈现的方式相同:

    document.getElementById('frameId').contentWindow.postMessage('message','*');

    回复
    0
  • P粉670838735

    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('','*');

    回复
    0
  • 取消回复