内联javascript,什么是'javascript'在& # 39;javascript:警报(&

Inline javascript, what is the 'javascript' in 'javascript:alert('asdf')'

本文关键字:javascript 警报 什么 内联      更新时间:2023-09-26

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

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

我做了一些测试,发现在我所有的浏览器中,甚至是IE5模式下的IE,你可以将javascript更改为任何东西,alert将正常启动。

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

分隔符是什么?它背后的历史是什么?它曾经需要或有用吗?我似乎记得<script type="text/javascript">并不真的需要type属性集,这与此有关吗?我试着用谷歌搜了一下,但是很难找到

如果页面上的第一个脚本是VBScript
,则只有在IE中才需要这个标签如果将<script type="VBScript"></script>添加到(older?)如果你以后的脚本是javascript特定的,并且没有javascript:标签来告诉IE切换回

,那么你以后的脚本将会失败。

在这里看到我的回答:JavaScript伪协议实际上做什么?

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

label:
  statement;

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

IE的处理方式不同;你可以在这个答案中找到更多细节。

相关答案和链接:

  • 什么时候'javascript:'前缀是有效的语法?
  • 无用的javascript:伪协议