Saya ingin memuat ulang <iframe>
menggunakan JavaScript. Cara terbaik yang saya temukan sampai sekarang adalah mengatur src
atribut iframe untuk dirinya sendiri, tetapi ini tidak terlalu bersih. Ada ide?
javascript
iframe
caffo
sumber
sumber
src
atribut ke dirinya sendiri tidak bersih? Tampaknya menjadi satu-satunya solusi yang berfungsi di seluruh browser dan di seluruh domainsrc
atribut itu sendiri menyebabkan masalah jika Anda memiliki tautan di tempat lain yang menargetkan<iframe>
. Kemudian bingkai akan menampilkan halaman awal yang dirancang semula.Jawaban:
hati-hati, di Firefox,
window.frames[]
tidak bisa diindeks oleh id, tetapi dengan nama atau indekssumber
frames[1].location.href.reload()
danwindow.frames['some_frame_id'].location.href.reload()
juga dapat digunakanIni akan memuat ulang
iframe
, bahkan di seluruh domain! Diuji dengan IE7 / 8, Firefox dan Chrome.sumber
document.getElementById('iframeid').src += '';
juga berfungsi: jsfiddle.net/Daniel_Hug/dWm5kreload
tetapi ini diizinkan.http://example.com/#something
), Ini tidak akan memuat ulang bingkai. Saya telah menggunakan pendekatan menambahkan parameter permintaan sekali pakai seperti?v2
ke URL sebelum hash.Jika menggunakan jQuery, ini sepertinya berfungsi:
Saya harap ini tidak terlalu jelek untuk stackoverflow.
sumber
var iframe = document.getElementById("your_iframe"); iframe.src = src;
var iframe = document.getElementById("your_iframe"); iframe.src = iframe.src;
Tambahkan ruang kosong juga memuat ulang iFrame secara otomatis.
sumber
sumber
Karena kebijakan asal yang sama , ini tidak akan berfungsi ketika memodifikasi iframe yang menunjuk ke domain yang berbeda. Jika Anda dapat menargetkan browser yang lebih baru, pertimbangkan untuk menggunakan pesan lintas-dokumen HTML5 . Anda melihat browser yang mendukung fitur ini di sini: http://caniuse.com/#feat=x-doc-messaging .
Jika Anda tidak dapat menggunakan fungsionalitas HTML5, maka Anda dapat mengikuti trik yang diuraikan di sini: http://softwareas.com/cross-domain-communication-with-iframes . Entri blog itu juga melakukan pekerjaan yang baik untuk mendefinisikan masalah.
sumber
Saya baru saja menemukan ini dalam chrome dan satu-satunya hal yang berhasil adalah menghapus dan mengganti iframe. Contoh:
Cukup sederhana, tidak tercakup dalam jawaban lain.
sumber
untuk url baru
Metode assign () memuat dokumen baru.
memuat ulang
Metode reload () digunakan untuk memuat ulang dokumen saat ini.
sumber
Cukup mengganti
src
atribut elemen iframe tidak memuaskan dalam kasus saya karena orang akan melihat konten lama sampai halaman baru dimuat. Ini berfungsi lebih baik jika Anda ingin memberikan umpan balik visual instan:sumber
Penyempurnaan pada posting yajra ... Saya suka pemikiran itu, tapi benci ide deteksi browser.
Saya lebih suka mengambil tampilan ppp menggunakan deteksi objek daripada deteksi browser, ( http://www.quirksmode.org/js/support.html ), karena Anda sebenarnya sedang menguji kemampuan browser dan bertindak sesuai, alih-alih apa yang menurut Anda mampu dilakukan browser pada saat itu. Juga tidak memerlukan penguraian string ID browser yang jelek, dan tidak mengecualikan browser dengan kemampuan sempurna yang tidak Anda ketahui.
Jadi, daripada melihat navigator. AppName, mengapa tidak melakukan sesuatu seperti ini, sebenarnya menguji elemen yang Anda gunakan? (Anda dapat menggunakan blok coba {} jika Anda ingin lebih keren, tetapi ini berhasil bagi saya.)
Dengan cara ini, Anda dapat mencoba berbagai permutasi yang Anda inginkan atau perlu, tanpa menyebabkan kesalahan javascript, dan melakukan sesuatu yang masuk akal jika semuanya gagal. Ini sedikit lebih banyak pekerjaan untuk menguji objek Anda sebelum menggunakannya, tetapi, IMO, membuat kode yang lebih baik dan lebih gagal.
Bekerja untuk saya di IE8, Firefox (15.0.1), Chrome (21.0.1180.89 m), dan Opera (12.0.2) pada Windows.
Mungkin saya bisa melakukan yang lebih baik dengan benar-benar menguji fungsi reload, tapi itu sudah cukup bagi saya sekarang. :)
sumber
Sekarang untuk membuatnya bekerja di chrome 66, coba ini:
sumber
Di IE8 menggunakan .Net, pengaturan
iframe.src
untuk pertama kalinya adalah ok, tetapi pengaturaniframe.src
untuk kedua kalinya tidak meningkatkanpage_load
halaman buka. Untuk menyelesaikannya saya menggunakaniframe.contentDocument.location.href = "NewUrl.htm"
.Temukan ketika digunakan jQuery thickBox dan coba buka kembali halaman yang sama di iframe thickbox. Kemudian itu hanya menunjukkan halaman sebelumnya yang dibuka.
sumber
Gunakan ulang untuk IE dan atur src untuk browser lain. (memuat ulang tidak berfungsi pada FF) diuji pada IE 7,8,9 dan Firefox
sumber
Jika Anda menggunakan Jquery maka ada satu kode baris.
dan jika Anda bekerja dengan orang tua yang sama maka
sumber
Jika semua hal di atas tidak berhasil untuk Anda:
Ini karena beberapa alasan menyegarkan iframe saya dan bukan keseluruhan skrip. Mungkin karena ditempatkan di dalam bingkai itu sendiri, sementara semua solusi getElemntById berfungsi saat Anda mencoba menyegarkan bingkai dari bingkai lain?
Atau saya tidak mengerti ini sepenuhnya dan berbicara omong kosong, bagaimanapun ini bekerja untuk saya seperti pesona :)
sumber
Sudahkah Anda menganggap menambahkan ke parameter parameter string kueri yang tidak berarti?
Itu tidak akan terlihat & jika Anda mengetahui parameter yang aman maka itu akan baik-baik saja.
sumber
Solusi lain.
sumber
var url = ifr.src; ifr.src = null; ifr.src = url;
Menggunakan
self.location.reload()
akan memuat ulang iframe.sumber
sumber
Jika Anda mencoba semua saran lainnya, dan tidak dapat menjalankannya (seperti saya tidak bisa), berikut adalah sesuatu yang dapat Anda coba yang mungkin berguna.
HTML
JS
Awalnya saya mulai mencoba dan menghemat waktu dengan pengujian RWD dan lintas-browser. Saya ingin membuat halaman cepat yang menampung sekelompok iframe, diorganisasikan ke dalam grup yang akan saya tampilkan / sembunyikan sesuka hati. Secara logis Anda ingin dapat dengan mudah dan cepat menyegarkan setiap frame yang diberikan.
Saya harus mencatat bahwa proyek yang saya kerjakan saat ini, yang digunakan dalam test-bed ini, adalah situs satu halaman dengan lokasi yang diindeks (mis. Index.html # home). Itu mungkin ada hubungannya dengan mengapa saya tidak bisa mendapatkan solusi lain untuk menyegarkan kerangka khusus saya.
Karena itu, saya tahu itu bukan hal terbersih di dunia, tetapi itu bekerja untuk tujuan saya. Semoga ini bisa membantu seseorang. Sekarang seandainya saya bisa mencari cara untuk menjaga iframe dari menggulir halaman induk setiap kali ada animasi di dalam iframe ...
EDIT: Saya menyadari bahwa ini tidak "menyegarkan" iframe seperti yang saya harapkan. Ini akan memuat ulang sumber awal iframe. Masih tidak tahu mengapa saya tidak bisa mendapatkan opsi lain untuk bekerja ..
UPDATE: Alasan saya tidak bisa mendapatkan salah satu metode lain untuk bekerja adalah karena saya sedang menguji mereka di Chrome, dan Chrome tidak akan memungkinkan Anda untuk mengakses konten iframe (Penjelasan: Apakah mungkin rilis konten dukungan Chrome di masa depan di Windows / contentDocument ketika iFrame memuat file html lokal dari file html lokal? ) jika tidak berasal dari lokasi yang sama (sejauh yang saya mengerti). Setelah pengujian lebih lanjut, saya juga tidak dapat mengakses contentWindow di FF.
JS yang diubah
sumber
Untuk keperluan debugging, seseorang dapat membuka konsol, mengubah konteks eksekusi ke frame yang dia ingin refresh dan lakukan
document.location.reload()
sumber