Rumah >hujung hadapan web >tutorial js >Bagaimanakah Saya Boleh Mengakses Kandungan iFrame daripada Domain Berbeza?

Bagaimanakah Saya Boleh Mengakses Kandungan iFrame daripada Domain Berbeza?

DDD
DDDasal
2024-12-23 15:04:14209semak imbas

How Can I Access an iFrame's Content from a Different Domain?

Akses iFrame Merentas Domain: Penyelesaian

Apabila cuba mengakses kandungan iFrame daripada domain lain, anda mungkin menghadapi Ralat "Kebenaran dinafikan untuk mengakses harta". Isu ini timbul disebabkan oleh dasar merentas domain penyemak imbas, yang mengehadkan pertukaran data antara domain atas sebab keselamatan.

Untuk mengatasi pengehadan ini, anda boleh menggunakan kaedah postMessage, tersedia jika anda mempunyai kawalan ke atas kedua-dua tapak pembingkaian dan kandungan iFrame. Kaedah ini membolehkan anda menghantar dan menerima mesej antara domain yang berbeza.

Berikut ialah contoh pelaksanaan:

Tapak berbingkai (iframe.net):

<script>
  window.onmessage = function(event) {
    event.source.postMessage(document.body.innerHTML, event.origin);
  };
</script>

Halaman utama (example.com):

<script>
  window.onmessage = function(event) {
    alert(event.data);
  };
</script>

<!-- Trigger the message sending -->
<iframe>
document.getElementById('myframe').contentWindow.postMessage('', '*');

Kaedah postMessage mengambil dua hujah: mesej untuk dihantar dan asal sasaran (domain untuk menerima mesej). Dalam contoh ini, kami menggunakan '*' untuk menunjukkan bahawa mesej boleh diterima oleh mana-mana domain.

Apabila kod ini dilaksanakan, mesej yang mengandungi badan iFrame dihantar dari tapak berbingkai ke utama halaman, di mana ia dipaparkan dalam kotak amaran. Ini menunjukkan cara memintas dasar merentas domain dan bertukar data antara dua domain menggunakan kaedah postMessage.

Atas ialah kandungan terperinci Bagaimanakah Saya Boleh Mengakses Kandungan iFrame daripada Domain Berbeza?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn