Rumah >hujung hadapan web >tutorial js >Mengapa Skrip Pengguna Saya Mendapat Ralat \'Uncaught ReferenceError: Function Not Defined\' Apabila Menggunakan onclick, dan Bagaimana Saya Boleh Membetulkannya?

Mengapa Skrip Pengguna Saya Mendapat Ralat \'Uncaught ReferenceError: Function Not Defined\' Apabila Menggunakan onclick, dan Bagaimana Saya Boleh Membetulkannya?

Linda Hamilton
Linda Hamiltonasal
2024-11-20 03:51:01193semak imbas

Why Does My Userscript Get an

Uncaught ReferenceError: Function Not Defined with OnClick

Apabila cuba menambah emote tersuai pada tapak web menggunakan skrip pengguna, anda mungkin menghadapi ralat yang menyatakan, "Uncaught ReferenceError: fungsi tidak ditakrifkan" apabila mengklik butang dengan atribut onclick.

Memahami Isu

Skrip pengguna beroperasi dalam persekitaran kotak pasir, menghalang akses terus kepada fungsi yang sedia ada dalam skop halaman web sasaran. Atribut onclick menggunakan skop halaman web ini, menyebabkan ia gagal apabila digunakan dalam skrip pengguna.

Penyelesaian: Menggunakan addEventListener()

Untuk menyelesaikan isu ini, elakkan menggunakan onclick() dan atribut serupa dalam skrip pengguna. Sebaliknya, pilih kaedah addEventListener() (atau fungsi perpustakaan yang setara seperti jQuery .on() untuk tujuan ini.

Menulis Semula Kod

Sebagai contoh, kod berikut menggunakan onclick:

something.outerHTML += '<input onclick="resetEmotes()">

Boleh ditulis semula menggunakan addEventListener():

something.outerHTML += '<input>

Pengubahsuaian Gelung dan Pendengar Acara

Selain itu, elakkan menghantar data terus kepada pendengar acara menggunakan kod seperti ini:

emoteTab[2].innerHTML += '<span>

Sebaliknya, gunakan atribut data dan tambahkan pendengar acara secara berasingan, seperti yang dilihat di bawah:

for (i = 0; i < EmoteURLLines.length; i++) {
  if (checkIMG(EmoteURLLines[i])) {
    emoteTab[2].innerHTML += '<span>

Dalam fungsi appendEmote:

function appendEmote(zEvent) {
  var emoteUsage = this.getAttribute("data-usage");
  shoutdata.value += emoteUsage;
}

Amaran

Elakkan menggunakan semula ID yang sama untuk berbilang elemen kerana ia tidak sah setiap halaman hanya boleh mempunyai satu tika ID tertentu.

Selain itu, berhati-hati menggunakan .outerHTML atau .innerHTML kerana ia mengalih keluar acara sedia ada. pengendali daripada nod yang terjejas.

Atas ialah kandungan terperinci Mengapa Skrip Pengguna Saya Mendapat Ralat \'Uncaught ReferenceError: Function Not Defined\' Apabila Menggunakan onclick, dan Bagaimana Saya Boleh Membetulkannya?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn