cari

Rumah  >  Soal Jawab  >  teks badan

masalah merentas domain iframe

<p>Andaikan saya mempunyai tapak web bernama example.com dengan iframe dibenamkan dalam domain iframe.net, sekarang saya ingin membaca kandungan iframe dan lulus beberapa parameter untuk memaparkan mesej teks. Suka menggunakan nama pengguna Hai. </p> <p>Sekarang masalahnya ialah ini tidak boleh mewujudkan sambungan antara kedua-duanya malah mendapatkan innerHTML iframe yang saya gunakan di bawah</p> <pre class="brush:php;toolbar:false;">document.getElementById('myframe').contentWindow.document.body.innerHTML;</pre> <p>Ia menimbulkan ralat "Kebenaran untuk mengakses harta ditolak"</p> <p>Adakah sesiapa tahu cara membaca dan menulis merentas platform merentas domain</p>
P粉939473759P粉939473759463 hari yang lalu519

membalas semua(2)saya akan balas

  • P粉092778585

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

    balas
    0
  • P粉670838735

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

    balas
    0
  • Batalbalas