什么时候是';javascript:';前缀有效语法?

什么时候是';javascript:';前缀有效语法?,javascript,syntax,Javascript,Syntax,我知道可以在标记中为URL使用javascript:pseudo协议。但是,我注意到Firefox和IE都允许在标记中的javascript代码前面加上“javascript:”。这是有效的语法吗?它会改变范围规则吗 示例: 我已经看过很多次了: <a onclick="javascript:alert('hello world!');">Hello World!</a> 你好,世界! 但是这种语法合法/有效吗?它有什么特殊作用吗 <script type="t

我知道可以在
标记中为URL使用javascript:pseudo协议。但是,我注意到Firefox和IE都允许在
标记中的javascript代码前面加上“
javascript:
”。这是有效的语法吗?它会改变范围规则吗

示例: 我已经看过很多次了:

<a onclick="javascript:alert('hello world!');">Hello World!</a>
你好,世界!
但是这种语法合法/有效吗?它有什么特殊作用吗

<script type="text/javascript">
javascript:alert('hello world!');
</script>

javascript:alert('helloworld!');

如果要将javascript放入链接的
href
属性中,则需要
javascript:
“协议”

<!-- does not work -->
<a href="alert('some text');">link</a>

<!-- does work -->
<a href="javascript:alert('some text');">link</a>

<!-- also works -->
<a href="#" onclick="alert('some text');">link</a>

一个要考虑的问题是,如果我们做了一些类似

的事情,我们的测试员总是会嘲笑我们。

<a href='javascript:openwindowmethod("url");'> stuff </a>

而不是


<a href='url' onclick='return openwindowmethod(this.href);'> stuff </a>

第一种方法只有在单击它时才有效,但如果按住shift键或alt键单击它,或者右键单击并在新窗口中打开,则不起作用


第二种方法将支持所有这些功能,并且如果用户只是简单地单击链接,则能够按预期方式运行。

href
属性(它是协议说明符)之外,name:just creates(例如可以与
continue
break
一起使用)


看:我也想知道这一点,很多人使用/滥用它。如果你能知道它是正确使用还是滥用,那就好了。你能举例说明你的意思吗?我不明白“我注意到firefox和IE都允许‘javascript:’在标记中的javascript代码之前。”部分。他的意思是,你真的可以用它做各种疯狂的事情,比如打开窗口和文档。写信给他们。谢谢你,Allen,但你的例子不是“标记中URL的伪协议”吗希思最先提到的事?还是我弄错了?哦,哇,是的,我很笨,我看错了这个问题,看来我们中的很多人这么做被认为是最佳实践。从概念上讲,url栏应该用于url,而不是Scriptlet。javascript:将更改url栏,而onclick不会。回答得不错,+1贪婪。尽管在某些情况下,使用href=“#”会导致页面跳转。当这种情况发生时,我同意href=“javascript:;”或href=“javascript:void();”::在自己头上重击::谢谢!

<a href='url' onclick='return openwindowmethod(this.href);'> stuff </a>