Saya ingin memanipulasi HTML di dalam iframe menggunakan jQuery.
Saya pikir saya akan bisa melakukan ini dengan mengatur konteks fungsi jQuery menjadi dokumen iframe, seperti:
$(function(){ //document ready
$('some selector', frames['nameOfMyIframe'].document).doStuff()
});
Namun sepertinya ini tidak berhasil. Sedikit pemeriksaan menunjukkan bahwa variabel dalam frames['nameOfMyIframe']
adalah undefined
kecuali aku menunggu beberapa saat untuk iframe ke beban. Namun, ketika iframe memuat variabel tidak dapat diakses (saya mendapatkan permission denied
kesalahan ketik).
Apakah ada yang tahu tentang penyelesaian masalah ini?
.contentWindow.document
daripada.document
padaiframe
elemen. Saya akan menyarankan perubahan di atas.Jawaban:
Saya pikir apa yang Anda lakukan tunduk pada kebijakan asal yang sama . Ini harus menjadi alasan mengapa Anda mendapatkan izin kesalahan jenis ditolak .
sumber
Jika
<iframe>
dari domain yang sama, elemen-elemennya mudah diaksesReferensi
sumber
same origin policy
, dalam hal ini jawaban ini bukan solusi untuknya.Anda bisa menggunakan
.contents()
metode jQuery.sumber
Jika iframe src berasal dari domain lain Anda masih bisa melakukannya. Anda perlu membaca halaman eksternal ke dalam PHP dan mengulanginya dari domain Anda. Seperti ini:
iframe_page.php
Maka sesuatu seperti ini:
display_page.html
Di atas adalah contoh bagaimana mengedit halaman eksternal melalui iframe tanpa akses ditolak dll ...
sumber
same origin policy
ada, dan proposal jawaban ini tidak kebal terhadapnya.Saya menemukan cara ini lebih bersih:
sumber
Menggunakan
dari pada
sumber
Anda perlu melampirkan sebuah acara ke handler onload iframe, dan jalankan js di sana, sehingga Anda memastikan iframe telah selesai memuat sebelum mengaksesnya.
Hal di atas akan menyelesaikan masalah 'belum-dimuat', tetapi sehubungan dengan izin, jika Anda memuat halaman di iframe yang berasal dari domain yang berbeda, Anda tidak akan dapat mengaksesnya karena pembatasan keamanan.
sumber
Anda dapat menggunakan window.postMessage untuk memanggil fungsi antara halaman dan iframe-nya (lintas domain atau tidak).
Dokumentasi
page.html
iframe.html
sumber
Saya lebih suka menggunakan varian lain untuk mengakses. Dari induk, Anda dapat memiliki akses ke variabel dalam iframe anak.
$
adalah variabel juga dan Anda dapat menerima akses ke panggilan yang adilwindow.iframe_id.$
Misalnya,
window.view.$('div').hide()
- sembunyikan semua div di iframe dengan id 'view'Tapi, itu tidak berhasil di FF. Untuk kompatibilitas yang lebih baik, Anda harus menggunakan
$('#iframe_id')[0].contentWindow.$
sumber
Sudahkah Anda mencoba yang klasik, menunggu pemuatan selesai menggunakan fungsi siap pakai jQuery?
K
sumber
Saya membuat kode sampel. Sekarang Anda dapat dengan mudah memahami dari berbagai domain Anda tidak dapat mengakses konten iframe .. Domain yang sama kita dapat mengakses konten iframe
Saya membagikan kode saya kepada Anda, Silakan jalankan kode ini untuk memeriksa konsol. Saya mencetak src gambar di konsol. Ada empat iframe, dua iframe yang berasal dari domain yang sama & dua lainnya dari domain lain (pihak ketiga). Anda dapat melihat dua gambar src ( https://www.google.com/logos/doodles/2015/googles-new-logo -5078286822539264.3-hp2x.gif
dan
https://www.google.com/logos/doodles/2015/arbor-day-2015-brazil-5154560611975168-hp2x.gif ) di konsol dan juga dapat melihat dua kesalahan izin (2 Kesalahan: Izin ditolak untuk mengakses dokumen properti ' '
... irstChild)}, isi: function (a) {return m.nodeName (a, "iframe")? a.contentDocument ...
) yang berasal dari iframe pihak ketiga.
sumber
Saya akhirnya di sini mencari konten iframe tanpa jquery, jadi bagi orang lain yang mencari itu, hanya ini:
sumber
Solusi ini bekerja sama dengan iFrame. Saya telah membuat skrip PHP yang bisa mendapatkan semua konten dari situs web lain, dan yang paling penting adalah Anda dapat dengan mudah menerapkan jQuery khusus Anda ke konten eksternal itu. Silakan merujuk ke skrip berikut yang bisa mendapatkan semua konten dari situs web lain dan kemudian Anda dapat menerapkan cusom jQuery / JS Anda juga. Konten ini dapat digunakan di mana saja, di dalam elemen apa pun atau halaman apa pun.
sumber
Untuk kekuatan lebih:
dan
sumber