为什么浏览器在onclick的值中使用任何其他单词代替'javascript'时不会抛出错误?

soo*_*oot 100 html javascript

我继承了一个网站,只是遇到了这种好奇心:

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

我可以显示包含它的页面并单击链接以获得与我将" jamoscript" 更改为" " 时完全相同的确认对话框javascript.在加载页面或单击链接时,Firebug控制台中不会显示任何诊断信息.嘿嘿?谷歌搜索jamoscript并没有发现任何有趣的东西.

任何人都可以解释这种行为吗?

Poi*_*nty 144

"onclick"属性的字符串值被视为简单的JavaScript代码.JavaScript包含标记语句的规定,因此代码是return带有"jamoscript"标签的语句.换句话说,这个:

jamoscript: return confirm("Do you really want to hurt me?");
Run Code Online (Sandbox Code Playgroud)

是完全合法的JavaScript.标签使用不多,所以他们不熟悉.

"javascript:"前缀很重要的唯一上下文是当需要URL时,就像<a>标记的"href"属性一样.

  • 我在这里创建了一个帐户,只是为了告诉你这行代码(? - 我不是程序员)毫无疑问是由希腊人写的,或者至少是"jamoscirpt"是由希腊人提出的."Jamo"就是人们试图用英语字母的声音产生"f --- ing"这个词在希腊语中的声音.所以,如果你试着大声朗读"jamoscript",一个知道"脚本"这个词的希腊人会理解"f --- ing script".如果使用字母"g"代替"j",那么预期的效果将更加确定,但我猜有"j-ava"的预期游戏. (80认同)
  • 这个问题让我真的希望这种语言被称为"JamoScript". (53认同)
  • @AlecosPapadopoulos哇,太棒了.如果有的话,它甚至让我更希望**语言实际上被称为"JamoScript":) (6认同)
  • @asawyer我很欣赏这些信息(+1),但请不要诱惑我摆脱我温顺的在线角色,然后回到我真实的角色...... (6认同)
  • 这让我想起了以下内容的着名问题:`function foo(a){x:2}`. (5认同)
  • 我最喜欢的版本只是在代码中粘贴一个随机URL.如果没有语法高亮显示,那么`http:// www.google.com /`是有效的并不是很明显.奖金出现在C ... (4认同)
  • 哈哈!这就像一个视错觉.我的大脑清楚地知道你说的事实,但是代码欺骗我把它当作别的东西读.我们不会再被这个愚弄了! (3认同)
  • @torazaburo不要让我挂男人,它做什么? (2认同)