搜尋

首頁  >  問答  >  主體

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粉939473759459 天前515

全部回覆(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);
    };

    main.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
  • 取消回覆