Mengapa browser tidak menampilkan kesalahan saat kata lain digunakan sebagai pengganti 'javascript' dalam nilai onclick?

100

Saya mewarisi situs web, dan baru saja menemukan rasa ingin tahu ini:

<a href="/delete"  onClick="jamoscript:return confirm('Do you really want to do that?');">Delete all</a>

Saya dapat menampilkan halaman yang berisi itu dan mengklik tautan untuk mendapatkan kotak dialog konfirmasi persis sama seperti yang saya lakukan ketika saya mengubah " jamoscript" menjadi " javascript". Tidak ada diagnostik yang ditampilkan di konsol Firebug, baik saat halaman dimuat atau saat link diklik. Apa hei? Googling untuk jamoscript tidak menghasilkan sesuatu yang menarik.

Adakah yang bisa menjelaskan perilaku ini?

jelaga
sumber

Jawaban:

144

Nilai string dari atribut "onclick" dianggap sebagai kode JavaScript sederhana. JavaScript menyertakan ketentuan untuk pernyataan berlabel , sehingga kode adalah returnpernyataan dengan label "jamoscript". Dengan kata lain, ini:

jamoscript: return confirm("Do you really want to hurt me?");

adalah JavaScript yang legal. Label tidak banyak digunakan, jadi tidak biasa.

Satu-satunya konteks di mana awalan "javascript:" penting adalah kapan URL diharapkan, seperti halnya dengan atribut "href" dari <a>tag.

Runcing
sumber
53
Pertanyaan ini membuat saya sangat berharap bahwa bahasa itu disebut "JamoScript".
Pointy
5
Ini mengingatkan saya pada masalah terkenal apa berikut tidak: function foo(a) { x: 2 }.
80
Saya membuat akun di sini, hanya untuk memberi tahu Anda bahwa baris kode ini (? -Aku bukan pemrogram) tanpa keraguan ditulis oleh orang Yunani, atau setidaknya "jamoscirpt" diusulkan oleh orang Yunani. "Jamo" adalah cara seseorang mencoba menggunakan bunyi huruf Inggris untuk menghasilkan suara yang dimiliki kata "f --- ing" dalam bahasa Yunani. Jadi jika Anda mencoba membacakan "jamoscript", orang Yunani yang mengetahui kata "script" akan mengerti "script f --- ing". Efek yang diinginkan akan lebih pasti jika alih-alih "j", huruf "g" digunakan, tapi saya kira ada permainan yang dimaksudkan dengan "j-ava".
Alecos Papadopoulos
6
@AlecosPapadopoulos wow itu luar biasa. Jika ada, itu membuat saya ingin bahkan lebih bahwa bahasa benar-benar disebut "JamoScript" :)
runcing
6
@asawyer Saya menghargai infonya (+1), tapi tolong jangan menggoda saya untuk melepaskan persona online saya yang lemah lembut dan kembali ke yang asli ...
Alecos Papadopoulos