asp.net 函数调用前的冒号运算符“:“(javascript)

mwkjh3gx  于 2023-01-22  发布在  .NET
关注(0)|答案(3)|浏览(131)

我在看一个网站的源代码,我在一个链接中看到了这个奇怪的href属性,我不知道它在做什么。它看起来不像有效的javascript。我想这里的冒号操作符可能被用来访问对象javascript中的函数属性popDocWin,但当我试图在测试函数上模拟该语法时,它不起作用。

<a href="javascript:popDocWin('aviewdocument.aspx?t=4704396');">Exterior Adjustable</a>
fjnneemd

fjnneemd1#

javascript:是一个伪协议,意思是"运行下面的代码"。(在浏览器上下文中)URL有效的任何地方。在这种情况下,单击链接"跟随"链接,跟随链接的行为将运行JavaScript,而不是去任何地方。(这也是bookmarklets的工作原理。)所以javascript:部分不是JavaScript,只是它后面的部分。
但是,类似于 * 的内容 * 是有效的JavaScript:如果它不在URL中,它将创建一个 * labeled statement *。JavaScript中labeled statement的主要用途是将外部循环从内部循环中分离出来,如下所示:

var x, y;
outer: for (x = 0; x < 5; ++x) {
    for (y = 0; y < 5; ++y) {
        if (x === 2 && y === 3) {
            break outer;
        }
        snippet.show("x = " + x + ", y = " + y);
    }
}

输出:

x = 0, y = 0
x = 0, y = 1
x = 0, y = 2
x = 1, y = 0

注意x循环是如何从y循环中终止的。

var snippet = {
  show: function(msg) {
    document.body.insertAdjacentHTML("beforeend", "<p>" + msg + "</p>");
  }
};

var x, y;
outer: for (x = 0; x < 3; ++x) {
    for (y = 0; y < 3; ++y) {
        if (x === 1 && y === 1) {
            break outer;
        }
        snippet.show("x = " + x + ", y = " + y);
    }
}
gg0vcinb

gg0vcinb2#

冒号不是在函数调用之前,而是在javascript之后!
它告诉您的浏览器应该执行冒号后面的javasript代码。

4dbbbstv

4dbbbstv3#

嗯,href不是浏览器期望javascript代码的地方,所以javascript:告诉浏览器,它应该把它后面的任何东西都当作javascript。

相关问题