Hea*_*ers 13 javascript syntax
我知道您可以对<a>标记中的URL使用javascript:pseudo协议.但是,我注意到Firefox和IE都允许' javascript:'在<script>标签内的javascript代码之前.这是有效的语法吗?它是否会改变范围规则?
示例:我已经多次看到过:
<a onclick="javascript:alert('hello world!');">Hello World!</a>
Run Code Online (Sandbox Code Playgroud)
但这是合法/有效的语法,它做了什么特别的事情:
<script type="text/javascript">
javascript:alert('hello world!');
</script>
Run Code Online (Sandbox Code Playgroud)
Sho*_*og9 15
在外部href属性(它是一个协议说明),名称:只是创建一个标签(例如一个可能与使用continue或break).
Jam*_*col 11
如果javascript:要将JavaScript放在href链接的属性中,则需要"协议" .
<!-- 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>
Run Code Online (Sandbox Code Playgroud)
据我所知(并且,如果我错了,有人纠正我),范围没有区别,但是有一个非常重要的区别this.
<!-- does not work -->
<a href="alert(this.href);">link</a>
<!-- alerts "undefined" -->
<a href="javascript:alert(this.href);">link</a>
<!-- works as expected, alerts "<url>#" -->
<a href="#" onclick="alert(this.href);">link</a>
Run Code Online (Sandbox Code Playgroud)
有一点需要考虑,如果我们做了类似的事情,我们的测试人员总会叮嘱我们
<a href='javascript:openwindowmethod("url");'> stuff </a>
Run Code Online (Sandbox Code Playgroud)
而不是
<a href='url' onclick='return openwindowmethod(this.href);'> stuff </a>
Run Code Online (Sandbox Code Playgroud)
第一种方法只有在你点击它时才有效,但如果你移动或者点击它,或者右键单击并在新窗口中打开则不会.
第二种方法将支持所有这些,以及如果用户只是简单地点击链接就能够按照预期的方式运行.