Saya membuat acara, jadi gunakan konstruktor DOM Event:
new Event('change');
Ini berfungsi baik di browser modern, namun di Internet Explorer 9, 10 & 11, gagal dengan:
Object doesn't support this action
Bagaimana saya bisa memperbaiki Internet Explorer (idealnya melalui polyfill)? Jika saya tidak bisa, apakah ada solusi yang dapat saya gunakan?
internet-explorer-9
internet-explorer-10
internet-explorer-11
dom-events
custom-events
mikemaccana
sumber
sumber
Jawaban:
Ada polyfill IE untuk konstruktor CustomEvent di MDN . Menambahkan CustomEvent ke IE dan menggunakannya malah berfungsi.
sumber
window.Event= CustomEvent
di baris terakhir.StorageEvent
dantypeof(StorageEvent)
tidak bekerja di MS Edge. Ini bekerja:try { new StorageEvent(); } catch (e) { /* polyfill */ }
.Saya pikir solusi terbaik untuk menyelesaikan masalah Anda dan menangani pembuatan acara lintas-browser adalah:
sumber
return event
jadi saya bisa meneruskannyadispatchEvent()
.initEvent
sudah tua dan usang , Anda harus setidaknya menggunakan cara modern dan sebagai cadangan, gunakan cara usang.CustomEvent
memungkinkan untuk melewatkan data khusus melaluidetail
opsi, danEvent
tidak. Apakah aku salah?Paket ini melakukan keajaiban:
https://www.npmjs.com/package/custom-event-polyfill
Sertakan paket dan kirim acara sebagai berikut:
sumber
Jika Anda hanya mencoba mengirim acara sederhana seperti acara beralih HTML, ini berfungsi di Internet Explorer 11 serta browser lainnya:
sumber
es6
let
(dan tidak menggunakanvar
) dengan kode yang seharusnya dijalankan pada IE lama .. ini mungkin membingungkan pemula yang akan menyalin-menempelkan iniIE 9
dan di atas, dan mungkin seseorang yang mencari jawaban yang menemukan utas ini, sedang mengembangkan aplikasi untuk sistem perbankan warisan atau sistem lain untuk klien bisnis yang tidak memiliki kendali atas komputer mereka dan wajib bekerja dengan IE lama. ini tidak ada hubungannya dengan Dukungan Microsoft ..Ada layanan polyfill yang dapat menambal ini dan lainnya untuk Anda
https://polyfill.io/v3/url-builder/
sumber
yang
custom-event
paket NPM bekerja dengan indah bagi sayahttps://www.npmjs.com/package/custom-event
sumber
Saya pribadi menggunakan fungsi pembungkus untuk menangani acara yang dibuat secara manual. Kode berikut akan menambahkan metode statis pada semua
Event
antarmuka (semua variabel global yang diakhiriEvent
adalah antarmuka Acara) dan memungkinkan Anda untuk memanggil fungsi sepertielement.dispatchEvent(MouseEvent.create('click'));
pada IE9 +.EDIT: Fungsi untuk menemukan semua
Event
antarmuka juga dapat diganti dengan array untuk mengubah hanya antarmuka Acara yang Anda butuhkan (['Event', 'MouseEvent', 'KeyboardEvent', 'UIEvent' /*, etc... */]
).sumber