Apa metode (modern) yang benar untuk memanfaatkan peristiwa mengubah ukuran jendela yang berfungsi di Firefox, WebKit , dan Internet Explorer?
Dan bisakah Anda menghidupkan / mematikan kedua scrollbar?
javascript
jquery
cross-browser
resize
BuddyJoe
sumber
sumber
window.dispatchEvent(new Event('resize'));
stackoverflow.com/questions/1818474/…Jawaban:
jQuery memiliki metode bawaan untuk ini:
Demi responsif UI, Anda dapat mempertimbangkan menggunakan setTimeout untuk memanggil kode Anda hanya setelah beberapa milidetik, seperti yang ditunjukkan dalam contoh berikut, terinspirasi oleh ini :
sumber
$('.button').on({ click: function(){ /* your code */ $(window).trigger('resize') })
sumber
Berikut ini cara non-jQuery dalam memanfaatkan acara pengubahan ukuran:
Ini bekerja di semua browser modern. Itu tidak mencekik apa pun untuk Anda. Ini adalah contoh dari tindakan itu.
sumber
Maaf untuk membuka utas lama, tetapi jika seseorang tidak ingin menggunakan jQuery Anda dapat menggunakan ini:
sumber
Karena Anda terbuka untuk jQuery, plugin ini tampaknya melakukan triknya.
sumber
Menggunakan jQuery 1.9.1 Saya baru tahu bahwa, meskipun secara teknis identik) *, ini tidak berfungsi di IE10 (tetapi di Firefox):
sementara ini berfungsi di kedua browser:
Sunting :)
* Sebenarnya tidak identik secara teknis, seperti dicatat dan dijelaskan dalam komentar oleh WraithKenny dan Henry Blyth .
sumber
.resize()
ke.bind('resize')
atau menambahkan fungsi anonim? Saya pikir ini yang kedua.)adjustSize
metode kehilangan konteksnyathis
, sedangkan panggilan keduaCmsContent.adjustSize()
mempertahankanthis
, yaituthis === CmsContent
. JikaCmsContent
instance diperlukan dalamadjustSize
metode, maka case pertama akan gagal. Kasing kedua akan berfungsi untuk setiap jenis panggilan fungsi, jadi disarankan untuk selalu melewati fungsi anonim.jQuery
menyediakan$(window).resize()
fungsi secara default:sumber
Saya menganggap plugin jQuery "jQuery resize event" menjadi solusi terbaik untuk ini karena ini menangani pelambatan acara sehingga berfungsi sama di semua browser. Ini mirip dengan jawaban Andrews tetapi lebih baik karena Anda dapat mengaitkan acara pengubahan ukuran ke elemen / penyeleksi tertentu serta seluruh jendela. Ini membuka kemungkinan baru untuk menulis kode bersih.
Plugin ini tersedia di sini
Ada masalah kinerja jika Anda menambah banyak pendengar, tetapi untuk sebagian besar kasus penggunaan itu sempurna.
sumber
Saya pikir Anda harus menambahkan kontrol lebih lanjut untuk ini:
sumber
berharap ini akan membantu di jQuery
tentukan suatu fungsi terlebih dahulu, jika ada fungsi yang ada lompati ke langkah berikutnya.
ukuran browser gunakan seperti ini.
sumber
Selain fungsi mengubah ukuran jendela yang disebutkan, penting untuk dipahami bahwa acara pengubahan ukuran sering diaktifkan jika digunakan tanpa merusak acara.
Paul Irish memiliki fungsi yang sangat baik yang banyak mengubah ukuran panggilan. Sangat disarankan untuk digunakan. Bekerja lintas-browser. Mengujinya di IE8 tempo hari dan semuanya baik-baik saja.
http://www.paulirish.com/2009/throttled-smartresize-jquery-event-handler/
Pastikan untuk memeriksa demo untuk melihat perbedaannya.
Inilah fungsi untuk kelengkapan.
sumber