我在看一个网站的源代码,我在一个链接中看到了这个奇怪的href属性,我不知道它在做什么。它看起来不像有效的javascript。我想这里的冒号操作符可能被用来访问对象javascript中的函数属性popDocWin,但当我试图在测试函数上模拟该语法时,它不起作用。
javascript
popDocWin
<a href="javascript:popDocWin('aviewdocument.aspx?t=4704396');">Exterior Adjustable</a>
fjnneemd1#
javascript:是一个伪协议,意思是"运行下面的代码"。(在浏览器上下文中)URL有效的任何地方。在这种情况下,单击链接"跟随"链接,跟随链接的行为将运行JavaScript,而不是去任何地方。(这也是bookmarklets的工作原理。)所以javascript:部分不是JavaScript,只是它后面的部分。但是,类似于 * 的内容 * 是有效的JavaScript:如果它不在URL中,它将创建一个 * labeled statement *。JavaScript中labeled statement的主要用途是将外部循环从内部循环中分离出来,如下所示:
javascript:
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循环中终止的。
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); } }
gg0vcinb2#
冒号不是在函数调用之前,而是在javascript之后!它告诉您的浏览器应该执行冒号后面的javasript代码。
4dbbbstv3#
嗯,href不是浏览器期望javascript代码的地方,所以javascript:告诉浏览器,它应该把它后面的任何东西都当作javascript。
3条答案
按热度按时间fjnneemd1#
javascript:
是一个伪协议,意思是"运行下面的代码"。(在浏览器上下文中)URL有效的任何地方。在这种情况下,单击链接"跟随"链接,跟随链接的行为将运行JavaScript,而不是去任何地方。(这也是bookmarklets的工作原理。)所以javascript:
部分不是JavaScript,只是它后面的部分。但是,类似于 * 的内容 * 是有效的JavaScript:如果它不在URL中,它将创建一个 * labeled statement *。JavaScript中labeled statement的主要用途是将外部循环从内部循环中分离出来,如下所示:
输出:
注意
x
循环是如何从y
循环中终止的。gg0vcinb2#
冒号不是在函数调用之前,而是在javascript之后!
它告诉您的浏览器应该执行冒号后面的javasript代码。
4dbbbstv3#
嗯,href不是浏览器期望javascript代码的地方,所以
javascript:
告诉浏览器,它应该把它后面的任何东西都当作javascript。