Saya memiliki dua iframe pada halaman dan satu membuat perubahan ke yang lain tetapi iframe lainnya tidak menunjukkan perubahan sampai saya menyegarkan. Apakah ada cara mudah untuk menyegarkan iframe ini dengan jQuery?
<div class="project">
<iframe id="currentElement" class="myframe" name="myframe" src="http://somesite.com/something/new"></iframe>
</div>
javascript
jquery
html
iframe
Matt Elhotiby
sumber
sumber
Jawaban:
Jika iframe tidak berada di domain yang berbeda, Anda dapat melakukan sesuatu seperti ini:
Tetapi karena iframe berada di domain yang berbeda, Anda akan ditolak akses ke
contentDocument
properti iframe dengan kebijakan yang sama-asal .Tapi Anda bisa memaksa iframe lintas domain untuk memuat ulang jika kode Anda berjalan di halaman induk iframe, dengan mengatur atribut src untuk dirinya sendiri. Seperti ini:
Jika Anda mencoba untuk reload iframe dari iframe lain, Anda beruntung, yang adalah tidak mungkin.
sumber
document.getElementById(FrameID).contentWindow.location.reload(true);
iframe.contentDocument.location=iframe.src;
malah melakukan sesuatu yang bekerja dengan baik$('#map_iframe').attr('src', $('#map_iframe').attr('src'));
sumber
(function (elem) { elem.src = elem.src; }($('#iframe')[0]));
document.getElementById(FrameID).contentWindow.location.reload(true);
tidak berfungsi dengan benar. Jawaban ini berfungsi lebih baik.Anda juga bisa menggunakan jquery. Ini sama dengan yang diusulkan Alex hanya menggunakan JQuery:
sumber
var f = $('#iframeX') ; f.attr( 'src', f.attr( 'src' ))
mungkin lebih kuat untuk mempertahankan dan membacaMuat ulang iframe dengan jQuery
buat tautan di dalam iframe katakanlah dengan id = "reload" lalu gunakan kode berikut
dan Anda baik untuk menggunakan semua browser.
Muat ulang iframe dengan HTML (tanpa Java Script req.)
Ini memiliki solusi yang lebih sederhana: yang berfungsi tanpa javaScript di (FF, Webkit)
buat saja jangkar di sisi iframe Anda
Ketika Anda mengklik jangkar ini, segarkan saja iframe Anda
Tetapi jika Anda memiliki parameter kirim ke iframe Anda maka lakukan sebagai berikut.
tidak memerlukan url halaman apa pun karena -> target = "_ SELF" lakukan untuk Anda
sumber
dengan jquery Anda dapat menggunakan ini:
sumber
Hanya membalas jawaban Alex tetapi dengan jQuery
sumber
Ini cara lain
sumber
$( '#iframe' ).attr('src', $( '#iframe' ).attr('src'));
Saya cukup yakin semua contoh di atas hanya memuat ulang iframe dengan src aslinya, bukan URL saat ini.
Itu harus dimuat ulang menggunakan url saat ini.
sumber
Jika Anda lintas domain, cukup mengatur src kembali ke url yang sama tidak akan selalu memicu memuat ulang, bahkan jika hash lokasi berubah.
Mengalami masalah ini saat membuat iframe tombol Twitter secara manual, yang tidak akan menyegarkan ketika saya memperbarui url.
Tombol suka Twitter memiliki bentuk:
.../tweet_button.html#&_version=2&count=none&etc=...
Karena Twitter menggunakan fragmen dokumen untuk url, mengubah hash / fragmen tidak memuat ulang sumber, dan target tombol tidak mencerminkan konten baru saya yang dimuat ajax.
Anda dapat menambahkan parameter string kueri untuk memaksa memuat ulang (misalnya:
"?_=" + Math.random()
tetapi itu akan membuang-buang bandwidth, terutama dalam contoh ini di mana pendekatan Twitter secara khusus mencoba mengaktifkan caching.Untuk memuat ulang sesuatu yang hanya berubah dengan tag hash, Anda perlu menghapus elemen, atau mengubah
src
, menunggu utas keluar, lalu tetapkan kembali. Jika halaman masih di-cache, ini seharusnya tidak memerlukan hit jaringan, tetapi memicu frame memuat ulang.Pembaruan : Menggunakan pendekatan ini membuat item riwayat yang tidak diinginkan. Alih-alih, hapus dan buat ulang elemen iframe setiap kali, yang membuat tombol ini kembali () berfungsi seperti yang diharapkan. Senang juga tidak memiliki timer.
sumber
Hanya membalas jawaban Alex tetapi dengan jQuery:
Atau Anda dapat menggunakan fungsi kecil:
Saya harap ini membantu.
sumber
sumber
Ini dimungkinkan dengan JavaScript sederhana.
window.frames
sintaks untuk memecat fungsi JavaScript di iframe2. Pastikan untuk menggunakanid
/name
dari iframe2 dan bukansrc
.sumber
// menyegarkan semua iframe di halaman
sumber
solusi lintas-browser adalah:
ini berguna terutama ketika <iframe> adalah target dari suatu <form>
sumber
TERPECAHKAN! Saya mendaftar ke stockoverflow hanya untuk membagikan kepada Anda satu-satunya solusi (setidaknya di ASP.NET/IE/FF/Chrome) yang berfungsi! Idenya adalah untuk mengganti nilai innerHTML dari div dengan nilai innerHTML saat ini.
Berikut ini cuplikan HTML:
Dan kode Javascript saya:
Semoga ini membantu.
sumber
runat="server"
itu tidak berlaku; 2. Mengapa semua topi untukIFRAME
? 3. nilai atribut dimensi tidak memiliki unit; 4.frameborder
sudah tidak digunakan lagiAnda harus menggunakan
untuk menemukan sumber iframe dan URL-nya harus berada pada domain induk yang sama.
sumber
Anda bisa melakukannya seperti ini
sumber
Solusi di bawah ini pasti bekerja:
sumber