mata teras
- pengendalian acara JavaScript adalah asas semua aplikasi klien, tetapi ia dikaitkan dengan elemen DOM dan mungkin tidak cukup fleksibel. Acara adat JavaScript menyelesaikan masalah ini, memberikan kelonggaran dan kemudahan penyelenggaraan yang lebih besar.
- Membuat acara adat JavaScript termasuk nama, butiran, dan pilihan acara lulus ke objek
- baru. Selepas penciptaan, anda boleh menggunakan kaedah
CustomEvent
untuk menghantar acara ini pada elemen tertentu.dispatchEvent
Pelbagai pengendali boleh melanggan peristiwa tersuai, supaya tindakan yang berbeza dapat dilakukan berdasarkan peristiwa tersebut. Chrome, Firefox, dan Opera menyokong acara adat, dan beberapa perpustakaan JavaScript juga memberikan sokongan.
<label for="msg">你的留言</label><input type="text" id="msg"><button type="submit" form="msgbox">發(fā)送</button> <form id="msgbox"></form>Apabila menyerahkan borang, kita boleh menulis pengendali untuk echo mesej ke skrin, contohnya:
document.getElementById("msgbox").addEventListener("submit", function(e) { e.preventDefault(); var msg = e.currentTarget.getElementById("msg").value.trim(); if (msg) { alert(msg); } }, false);Bagaimana jika kita juga mahu menghantar mesej sebagai tweet, simpan di pelayan, atau lakukan tindakan lain? Untuk kaedah delegasi acara yang sedia ada, kami mempunyai dua pilihan:
- Tambah lebih banyak kod dalam pengendali sedia ada.
Ini tidak cukup fleksibel kerana setiap kali ciri ditambah, diubah, atau dipadam, fungsi pengendali perlu dikemas kini dan diuji. Mesej yang diposkan boleh mempunyai berpuluh -puluh kegunaan, dan kami cuba memohon semuanya ke blok kod yang sama.
- Buat lebih banyak pengendali acara untuk setiap tujuan.
Ini akan menghasilkan kod yang lebih elegan, tetapi akan menyebabkan masalah penyelenggaraan. Pertama, setiap fungsi mesti melaksanakan operasi yang sama untuk mengekstrak dan mengesahkan mesej. Bagaimana jika kita perlu menukar borang? Hanya menamakan semula ID memerlukan menukar kod pengendalian acara untuk setiap pelanggan.
atau document
tag dan bukannya merujuk nod bentuk tertentu. Acara tersuai membolehkan kami melakukan ini. Mencetuskan acara tersuai adalah mudah;
body
CustomEvent
Dalam contoh ini, "NewMessage" adalah jenis acara tersuai. Parameter kedua adalah objek dengan tiga atribut:
-
detail
: Objek kanak -kanak yang menyediakan maklumat tersuai mengenai peristiwa. Dalam contoh ini, kami menambah mesej dan masa. -
bubbles
: Jikatrue
, acara itu akan gelembung kepada nenek moyang unsur yang mencetuskan peristiwa tersebut. -
cancelable
: Jika iatrue
, anda boleh menggunakan kaedahstopPropagation()
objek acara untuk membatalkan acara tersebut.
Sekarang, kita perlu menghantar acara ini pada elemen tertentu, contohnya:
<label for="msg">你的留言</label><input type="text" id="msg"><button type="submit" form="msgbox">發(fā)送</button> <form id="msgbox"></form>
Sebarang bilangan pengendali boleh melanggan acara ini menggunakan kod berikut:
document.getElementById("msgbox").addEventListener("submit", function(e) { e.preventDefault(); var msg = e.currentTarget.getElementById("msg").value.trim(); if (msg) { alert(msg); } }, false);
halaman demo
Contoh ini menunjukkan teknik: Lihat halaman Demo Acara Custom. Pengendali acara standard mencari penyerahan borang HTML di atas. Fungsi ini mendapat mesej semasa dan mengandaikan ia sah, acara "NewMessage" baru dihantar.
var event = new CustomEvent( "newMessage", { detail: { message: "Hello World!", time: new Date(), }, bubbles: true, cancelable: true } );
Pengendali kini boleh melanggan acara "NewMessage". Acara ini dicetuskan hanya jika mesej yang sah wujud, dan sejak bubbles
ditetapkan kepada true
, peristiwa itu boleh digunakan untuk bentuk atau mana -mana nenek moyangnya, seperti akar document
, contohnya:
document.getElementById("msgbox").dispatchEvent(event);Mesej
itu sendiri boleh diekstrak dari atribut detail.message
objek acara.
Keserasian penyemak imbas
Pada masa penulisan, Chrome, Firefox, dan Opera Sokongan CustomEvent
objek. Ia boleh didapati dalam versi Safari setiap malam, jadi kemungkinan akan tersedia dalam penyemak imbas itu tidak lama lagi. Objek ini tidak disokong dalam IE9 dan di bawah. Nasib baik, beberapa perpustakaan JavaScript menyokong perwakilan acara adat, jadi tunggu untuk SitePoint untuk mendapatkan penyelesaian silang pelayar tidak lama lagi.
(bahagian Soalan Lazim ditinggalkan di sini kerana ia tidak sepadan dengan matlamat asal pseudo dan terlalu panjang.)
Atas ialah kandungan terperinci Cara membuat acara tersuai dalam javascript. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Alat AI Hot

Undress AI Tool
Gambar buka pakaian secara percuma

Undresser.AI Undress
Apl berkuasa AI untuk mencipta foto bogel yang realistik

AI Clothes Remover
Alat AI dalam talian untuk mengeluarkan pakaian daripada foto.

Clothoff.io
Penyingkiran pakaian AI

Video Face Swap
Tukar muka dalam mana-mana video dengan mudah menggunakan alat tukar muka AI percuma kami!

Artikel Panas

Alat panas

Notepad++7.3.1
Editor kod yang mudah digunakan dan percuma

SublimeText3 versi Cina
Versi Cina, sangat mudah digunakan

Hantar Studio 13.0.1
Persekitaran pembangunan bersepadu PHP yang berkuasa

Dreamweaver CS6
Alat pembangunan web visual

SublimeText3 versi Mac
Perisian penyuntingan kod peringkat Tuhan (SublimeText3)

Topik panas

Java dan JavaScript adalah bahasa pengaturcaraan yang berbeza, masing -masing sesuai untuk senario aplikasi yang berbeza. Java digunakan untuk pembangunan aplikasi perusahaan dan mudah alih yang besar, sementara JavaScript digunakan terutamanya untuk pembangunan laman web.

Titik berikut harus diperhatikan apabila tarikh pemprosesan dan masa di JavaScript: 1. Terdapat banyak cara untuk membuat objek tarikh. Adalah disyorkan untuk menggunakan rentetan format ISO untuk memastikan keserasian; 2. Dapatkan dan tetapkan maklumat masa boleh diperoleh dan tetapkan kaedah, dan ambil perhatian bahawa bulan bermula dari 0; 3. Tarikh pemformatan secara manual memerlukan rentetan, dan perpustakaan pihak ketiga juga boleh digunakan; 4. Adalah disyorkan untuk menggunakan perpustakaan yang menyokong zon masa, seperti Luxon. Menguasai perkara -perkara utama ini secara berkesan dapat mengelakkan kesilapan yang sama.

PlacingtagsatthebottomofablogpostorwebpageservespracticalpurposesforSEO,userexperience,anddesign.1.IthelpswithSEObyallowingsearchenginestoaccesskeyword-relevanttagswithoutclutteringthemaincontent.2.Itimprovesuserexperiencebykeepingthefocusonthearticl

JavaScriptispreferredforwebdevelopment, whersjavaisbetterforlarge-scalebackendsystemsandandroidapps.1) javascriptexcelsinceleatinginteractiveWebexperienceswithitsdynamicnatureanddommanipulation.2) javaoffersstrongyblectionandobjection

Penangkapan dan gelembung acara adalah dua peringkat penyebaran acara di Dom. Tangkap adalah dari lapisan atas ke elemen sasaran, dan gelembung adalah dari elemen sasaran ke lapisan atas. 1. Penangkapan acara dilaksanakan dengan menetapkan parameter useCapture addeventlistener kepada benar; 2. Bubble acara adalah tingkah laku lalai, useCapture ditetapkan kepada palsu atau ditinggalkan; 3. Penyebaran acara boleh digunakan untuk mencegah penyebaran acara; 4. Acara menggelegak menyokong delegasi acara untuk meningkatkan kecekapan pemprosesan kandungan dinamik; 5. Penangkapan boleh digunakan untuk memintas peristiwa terlebih dahulu, seperti pemprosesan pembalakan atau ralat. Memahami kedua -dua fasa ini membantu mengawal masa dan bagaimana JavaScript bertindak balas terhadap operasi pengguna.

JavascripthassevenfundamentalDatypes: nombor, rentetan, boolean, undefined, null, objek, andsymbol.1) numberuseadouble-precisionformat, bergunaforwidevaluangesbutbecautiouswithfloating-pointarithmetic.2)

Jika aplikasi JavaScript memuat perlahan -lahan dan mempunyai prestasi yang buruk, masalahnya adalah bahawa muatan terlalu besar. Penyelesaian termasuk: 1. Penggunaan kod pemisahan (codesplitting), memecah bundle besar ke dalam pelbagai fail kecil melalui react.lazy () atau membina alat, dan memuatkannya seperti yang diperlukan untuk mengurangkan muat turun pertama; 2. Keluarkan kod yang tidak digunakan (treeshaking), gunakan mekanisme modul ES6 untuk membersihkan "kod mati" untuk memastikan perpustakaan yang diperkenalkan menyokong ciri ini; 3. Memampatkan dan menggabungkan fail sumber, membolehkan GZIP/Brotli dan Terser memampatkan JS, menggabungkan fail dan mengoptimumkan sumber statik; 4. Gantikan kebergantungan tugas berat dan pilih perpustakaan ringan seperti hari.js dan ambil

Perbezaan utama antara modul ES dan Commonjs adalah kaedah pemuatan dan senario penggunaan. 1.Commonjs dimuatkan secara serentak, sesuai untuk persekitaran sisi pelayan Node.js; 2. Modul tidak disengajakan, sesuai untuk persekitaran rangkaian seperti penyemak imbas; 3. Sintaks, modul ES menggunakan import/eksport dan mesti terletak di skop peringkat atas, manakala penggunaan CommonJS memerlukan/modul.exports, yang boleh dipanggil secara dinamik pada runtime; 4.Commonjs digunakan secara meluas dalam versi lama node.js dan perpustakaan yang bergantung kepadanya seperti Express, manakala modul ES sesuai untuk kerangka depan moden dan nod.jsv14; 5. Walaupun ia boleh dicampur, ia boleh menyebabkan masalah dengan mudah.
