Jika memungkinkan, saya lebih suka memanggil fungsi daripada mengirim acara. Ini berfungsi baik jika Anda memiliki kendali atas kode yang ingin Anda jalankan, tetapi lihat di bawah untuk kasus-kasus di mana Anda tidak memiliki kode.
window.onresize = doALoadOfStuff;
function doALoadOfStuff() {
//do a load of stuff
}
Dalam contoh ini, Anda dapat memanggil doALoadOfStuff
fungsi tanpa mengirim acara.
Di browser modern Anda, Anda dapat memicu acara menggunakan:
window.dispatchEvent(new Event('resize'));
Ini tidak berfungsi di Internet Explorer, di mana Anda harus melakukannya dengan tangan:
var resizeEvent = window.document.createEvent('UIEvents');
resizeEvent.initUIEvent('resize', true, false, window, 0);
window.dispatchEvent(resizeEvent);
jQuery memiliki trigger
metode , yang berfungsi seperti ini:
$(window).trigger('resize');
Dan memiliki peringatan:
Meskipun .trigger () mensimulasikan aktivasi peristiwa, lengkap dengan objek acara yang disintesis, itu tidak sempurna mereplikasi peristiwa yang terjadi secara alami.
Anda juga dapat mensimulasikan acara pada elemen tertentu ...
function simulateClick(id) {
var event = new MouseEvent('click', {
'view': window,
'bubbles': true,
'cancelable': true
});
var elem = document.getElementById(id);
return elem.dispatchEvent(event);
}
sumber
trigger
sebenarnya tidak memicu acara "resize" asli. Ini hanya memicu pendengar acara yang telah ditambahkan menggunakan jQuery. Dalam kasus saya, perpustakaan pihak ke-3 sedang mendengarkan langsung acara "mengubah ukuran" asli dan ini adalah solusi yang bekerja untuk saya.window.fireEvent
)Dengan jQuery, Anda dapat mencoba memanggil pemicu :
sumber
window.dispatchEvent(new Event('resize'));
ternyataJS murni yang juga berfungsi di IE (dari @Manfred comment )
Atau untuk sudut:
sumber
Do not use this method anymore as it is deprecated.
The docs createEvent mengatakan "Banyak metode yang digunakan dengan createEvent, seperti initCustomEvent, yang usang. Gunakan acara konstruktor sebagai gantinya." Halaman ini terlihat menjanjikan untuk acara UI.new Event()
metode ini. Saya pikir sebagai peretasan terhadap peramban lama, Anda dapat melakukan sesuatu sepertiif (Event.prototype.initEvent) { /* deprecated method */ } else { /* current method */ }
. Di mana metode saat ini adalah jawaban avetisk .Menggabungkan jawaban pomber dan avetisk untuk mencakup semua browser dan tidak menyebabkan peringatan:
sumber
Saya sebenarnya tidak bisa membuat ini bekerja dengan salah satu solusi di atas. Setelah saya mengikat acara dengan jQuery maka itu berfungsi dengan baik seperti di bawah ini:
sumber
hanya
adalah apa yang saya gunakan ... kecuali saya salah paham dengan apa yang Anda minta.
sumber
Respon dengan RxJS
Katakan Seperti sesuatu di Angular
Jika langganan manual diinginkan (Atau Tidak Sudut)
Karena awal saya memulaiDengan Nilai mungkin salah (pengiriman untuk koreksi)
Di katakan Angular (saya bisa ..)
sumber
Saya percaya ini harus bekerja untuk semua browser:
sumber
Anda dapat melakukan ini dengan perpustakaan ini. https://github.com/itmor/events-js
sumber
window.resizeBy()
akan memicu event onresize window. Ini berfungsi baik dalam Javascript atau VBScript .window.resizeBy(xDelta, yDelta)
disebut sukawindow.resizeBy(-200, -200)
menyusutkan halaman 200px kali 200px.sumber