2

在这里检查

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

4

3 回答 3

5

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

你也可以写:

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

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

于 2013-10-08T14:55:19.293 回答
1

当您指定完全限定链接时,冒号左侧的文本称为方案

<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 标签。这是完全没有必要的。

于 2013-10-08T15:07:09.230 回答
0

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

于 2013-10-08T14:59:05.460 回答