内联javascript,'javascript:alert('asdf')'中的'javascript'是什么?

时间:2013-03-13 22:38:10

标签: javascript

我没有编写内联javascript,但我在使用的代码库中一直看到并使用它:

<div onClick='javascript:alert("asdf");'></div>

我做了一些测试,发现在我的所有浏览器中,即使是在IE5模式下的IE,你也可以将javascript更改为任何内容,而alert将会正常启动。

<div onClick='qwerty:alert("asdf");'></div>

那个分隔符是什么?它背后的历史是什么?它是否曾经需要或有用?我似乎记得<script type="text/javascript">并不真正需要type属性集,是否与此相关?我尝试了一些谷歌搜索,但很难搜索。

2 个答案:

答案 0 :(得分:6)

如果页面上的第一个脚本是VBScript,那么IE中只需要label 如果你将<script type="VBScript"></script>添加到(较旧的?)IE中,如果它们是特定于javascript的并且没有标签javascript:以告诉IE切换回来,那么后面的脚本将会失败

请在此处查看我的回答:What does the JavaScript pseudo protocol actually do?

答案 1 :(得分:2)

一般来说,它只是一个标签,类似于:

label:
  statement;

这就是为什么qwerty:alert("asdf")有效,因为它是合法的Javascript。

IE确实以不同方式处理此问题;您可以在this answer中找到更多详细信息。

相关答案和链接: