代码之家  ›  专栏  ›  技术社区  ›  Heath Borders

“javascript:”前缀的语法何时有效?

  •  13
  • Heath Borders  · 技术社区  · 17 年前

    我知道您可以使用javascript:pseudo协议在 <a> 标签不过,我注意到Firefox和IE都允许' javascript: '以在 <script> 标签这是有效的语法吗?它会改变范围规则吗?

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

    <a onclick="javascript:alert('hello world!');">Hello World!</a>
    

    但是这种语法合法/有效吗?它有什么特殊作用吗

    <script type="text/javascript">
    javascript:alert('hello world!');
    </script>
    
    3 回复  |  直到 16 年前
        1
  •  18
  •   Community Mohan Dere    6 年前

    href 名称 :刚刚创建 a label (例如可以与 continue break ).

    见: Do you ever need to specify javascript: in an onclick?

        2
  •  12
  •   James Socol    17 年前

    你需要 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>
    

    据我所知(如果我错了,请有人纠正我),范围上没有区别,但关于 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>
    
        3
  •  9
  •   Allen Rice 0x6A75616E    17 年前

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

    而不是

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

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

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

        4
  •  0
  •   qwr    5 年前

    这个 javascript: 语法可以在URL中的任何位置使用,并作为脚本执行以下字符串。它是 part of the HTML spec