为啥在 onclick 的值中使用任何其他词代替“javascript”时浏览器不会抛出错误?
Posted
技术标签:
【中文标题】为啥在 onclick 的值中使用任何其他词代替“javascript”时浏览器不会抛出错误?【英文标题】:Why don't browsers throw an error when any other word is used in place of 'javascript' in the value of onclick?为什么在 onclick 的值中使用任何其他词代替“javascript”时浏览器不会抛出错误? 【发布时间】:2015-02-20 18:12:01 【问题描述】:我继承了一个网站,只是遇到了这种好奇心:
<a href="/delete" onClick="jamoscript:return confirm('Do you really want to do that?');">Delete all</a>
我可以显示包含它的页面并单击链接以获取确认对话框,就像我将“jamoscript
”更改为“javascript
”时所做的一样。在加载页面或单击链接时,Firebug 控制台中不会显示任何诊断信息。什么嘿?谷歌搜索 jamoscript 并没有发现任何有趣的东西。
谁能解释这种行为?
【问题讨论】:
【参考方案1】:“onclick”属性的字符串值被视为简单的 JavaScript 代码。 JavaScript 包含对labeled statements 的规定,因此该代码是带有标签“jamoscript”的return
语句。换句话说,这是:
jamoscript: return confirm("Do you really want to hurt me?");
是完全合法的 JavaScript。标签用的不多,所以比较陌生。
“javascript:”前缀的唯一上下文是预期 URL 的情况,<a>
标记的“href”属性就是这种情况。
【讨论】:
这个问题让我真希望该语言被称为“JamoScript”。 这让我想起了下面这个著名的问题:function foo(a) x: 2
。
我在这里创建了一个帐户,只是为了告诉你这行代码(?-我不是程序员)毫无疑问是由希腊人编写的,或者至少“jamoscirpt”是由一个希腊人。 “Jamo”是人们尝试使用英文字母的发音来产生“f---ing”一词在希腊语中的发音的方式。因此,如果您尝试大声朗读“jamoscript”,一个知道“script”一词的希腊人会理解“f---ing script”。如果使用字母“g”代替“j”,预期效果会更加确定,但我想“j-ava”是预期的游戏。
@AlecosPapadopoulos 哇,太棒了。如果有的话,我什至希望更多该语言实际上被称为“JamoScript”:)
@asawyer 我感谢您提供的信息 (+1),但请不要诱使我摆脱温顺的在线角色并恢复我的真实角色...以上是关于为啥在 onclick 的值中使用任何其他词代替“javascript”时浏览器不会抛出错误?的主要内容,如果未能解决你的问题,请参考以下文章
如何使用 re 库提取 xml 值中给定标签列表的值? [复制]
为啥我在从 MS Access 数据库中提取的十进制值中添加了零?