Onclick değerinde 'javascript' yerine başka bir kelime kullanıldığında tarayıcılar neden bir hata atmıyor?


100

Bir web sitesini miras aldım ve şu merakla karşılaştım:

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

Onu içeren sayfayı görüntüleyebilir ve " jamoscript" " " olarak değiştirdiğimde yaptığım gibi onay iletişim kutusunu almak için bağlantıya tıklayabilirim javascript. Firebug konsolunda, sayfa yüklendiğinde veya bağlantı tıklandığında hiçbir teşhis görüntülenmez. Hey ne? Jamoscript için Google'da arama yapmak ilginç bir şey ortaya çıkarmaz.

Bu davranışı kimse açıklayabilir mi?

Yanıtlar:


144

Bir "onclick" özelliğinin dize değeri, basit JavaScript kodu olarak alınır. JavaScript, etiketli ifadeler için hükümler içerir , böylece kod, return"jamoscript" etiketli bir ifadedir. Başka bir deyişle, bu:

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

tamamen yasal JavaScript. Etiketler pek kullanılmadığı için tanıdık gelmiyorlar.

"Javascript:" önekinin önemli olduğu tek bağlam, <a>etiketlerin "href" özniteliğinde olduğu gibi bir URL beklendiği zamandır .


53
Bu soru, dilin "JamoScript" olarak adlandırılmasını gerçekten istememi sağlıyor.
Sivri

5
Bu şu ne yaptığı ünlü sorununun hatırlatıyor: function foo(a) { x: 2 }.

80
Burada bir hesap oluşturdum, sırf size bu kod satırının (? -Ben programcı değilim) hiç şüphesiz bir Yunan tarafından yazıldığını veya en azından "jamoscirpt" in bir Yunan tarafından önerildiğini söylemek için. "Jamo", Yunanca "f --- ing" kelimesinin sahip olduğu sesi üretmek için İngilizce harflerin seslerini kullanma girişimidir. Yani "jamoscript" i yüksek sesle okumaya çalışırsanız, "script" kelimesini bilen bir Yunanlı "f --- ing script" i anlayacaktır. "J" yerine "g" harfi kullanılmış olsaydı amaçlanan etki daha kesin olurdu, ama sanırım "j-ava" ile amaçlanan oyun vardı.
Alecos Papadopoulos

6
@AlecosPapadopoulos vay bu harika. Şey, benim bile arzu yaparsa daha dil aslında "JamoScript" :) denildiği
Pointy

6
@asawyer Bilgiye minnettarım (+1), ama lütfen beni ezik çevrimiçi kişiliğimi
bırakıp
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.