什么是javascript:函数语法是什么意思?

时间:2013-10-08 14:52:32

标签: javascript

检查here

javascript:Function("alert('this is ok')")();

相同
new Function("alert('this is ok')")();

语法叫什么?

任何参考?

修改

抱歉,我的错,它只是一个标签,而且不等于new

<script>
    javascript:C("val");
    wener:C("val");
    function C(v)
    {
        this.val = v;
        alert(window.val)
    }
</script>
<a href="javascript: alert('foo');">click me</a>

对于<a href="javascript: alert('foo');">click me</a>,请参阅URI_scheme(感谢apsillers)和draft-hoehrmann-javascript-scheme

3 个答案:

答案 0 :(得分:5)

它被称为“在属性中使用JavaScript的旧方式”,仅与HTML相关。

你也可以写:

poop:Function("alert('ohai')")();

您的示例只是JavaScript代码,而不是HTML属性,因此它只是一个标签。

答案 1 :(得分:1)

指定完全限定的链接时,冒号左侧的文本称为scheme

<a href="https://example.com/foo">foo</a>
           ^ scheme is "https"

浏览器允许您在HTML标记中指定javascript方案,在这种情况下,浏览器会将冒号右侧的链接内容解释为要执行的脚本,而不是目标资源。

<a href="javascript:alert('I am a script, formatted as a link!')">foo</a>
            ^ scheme is "javascript"

(请不要这样做;请改用addEventListener("click", function() { ... })。)

但是,如果在非链接上下文中包含javascript:前缀,则会将其解释为JavaScript label。这完全没必要。

答案 2 :(得分:0)

当您想在浏览器的地址栏中执行JavaScript时,可以使用此方法。将javascript:Function("alert('this is ok')")();复制/粘贴到浏览器的地址栏中,然后按Enter键。