Lebih
jQuery/JavaScript: mengakses isi dari iframe
Saya ingin memanipulasi HTML di dalam iframe using jQuery.
Saya pikir saya'a dapat melakukan hal ini dengan menetapkan konteks fungsi jQuery untuk menjadi dokumen iframe, seperti:
$(function(){ //document ready
$('some selector', frames['nameOfMyIframe'].document).doStuff()
});
Namun ini doesn't tampaknya bekerja. Sedikit pemeriksaan menunjukkan bahwa variabel-variabel dalam frame['nameOfMyIframe']
adalah undefined
kecuali aku menunggu beberapa saat untuk iframe untuk memuat. Namun, ketika iframe beban variabel-variabel yang tidak dapat diakses (saya mendapatkan permission denied
-jenis kesalahan).
Tidak ada yang tahu pekerjaan-sekitar ini?
768
14
Jika
<iframe>
dari domain yang sama, unsur-unsur yang dengan mudah dapat diakses sebagaiReferensi
Saya pikir apa yang anda lakukan adalah tunduk pada asal yang sama kebijakan. Ini harus menjadi alasan mengapa anda mendapatkan izin ditolak jenis kesalahan.
Anda bisa menggunakan
.isi()
metode jQuery.Jika iframe src adalah dari domain lain, anda masih bisa melakukannya. Anda perlu membaca halaman eksternal ke PHP dan echo dari domain anda. Seperti ini:
iframe_page.php
Kemudian sesuatu seperti ini:
display_page.html
Di atas adalah contoh bagaimana untuk mengedit halaman eksternal melalui iframe tanpa akses ditolak dll...
Saya menemukan cara ini cleaner:
Gunakan
bukan
Anda perlu untuk melampirkan sebuah acara untuk iframe's onload handler, dan mengeksekusi js di sana, sehingga anda pastikan iframe telah selesai loading sebelum mengakses itu.
Di atas akan memecahkan 'yang belum dimuat' masalah, tapi mengenai izin, jika anda adalah loading halaman dalam iframe yang dari domain yang berbeda, anda memenangkan't dapat mengaksesnya karena pembatasan keamanan.
Anda dapat menggunakan jendela.postMessage untuk memanggil fungsi antara halaman dan iframe (cross domain atau tidak).
Dokumentasi
page.html
iframe.html
Saya lebih suka menggunakan varian lain untuk mengakses. Dari orang tua anda dapat memiliki akses ke variabel dalam anak iframe.
$
adalah variabel juga dan anda dapat menerima akses ke hanya panggilanjendela.iframe_id.$
Misalnya,
jendela.lihat.$('div').hide()
- menyembunyikan semua divs di iframe dengan id 'lihat'Tapi, itu doesn't bekerja di FF. Untuk kompatibilitas yang lebih baik anda harus menggunakan
$('#iframe_id')[0].contentWindow.$
Apakah anda mencoba klasik, menunggu beban untuk menyelesaikan dengan menggunakan jQuery's builtin siap fungsi?
K
Saya membuat contoh kode . Sekarang anda dapat dengan mudah memahami dari domain yang berbeda anda dapat't access isi dari iframe .. domain yang Sama kita dapat mengakses konten iframe
Saya berbagi kode saya , Silakan jalankan kode ini cek konsol . Saya mencetak gambar src 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 izin kesalahan( Dua Error: akses ditolak untuk mengakses properti 'dokumen'
...irstChild)},isi:fungsi(dan){kembali m.nodeName(a,"iframe")?a.contentDocument...
) yang berasal dari pihak ketiga iframe.
Saya berakhir di sini mencari untuk mendapatkan isi dari iframe tanpa jquery, jadi untuk orang lain mencari untuk itu, itu hanya ini:
Solusi ini bekerja sama dengan iFrame. Saya telah menciptakan sebuah script PHP yang bisa mendapatkan semua isi dari website lain, dan yang paling penting adalah anda dapat dengan mudah menerapkan jQuery kustom untuk konten eksternal. Silakan lihat berikut script yang bisa mendapatkan semua isi dari website lain dan kemudian anda dapat menerapkan cusom jQuery/JS juga. Konten ini dapat digunakan di mana saja, dalam setiap elemen atau setiap halaman.
Untuk lebih robustness:
dan