点击以下两个链接有何不同:
<a href />
vs.
调用 window.location.href = ...
?
点击以下两个链接有何不同:
<a href />
vs.
调用 window.location.href = ...
?
<a href="foo.html">
而不是window.location.href
,有很多非常好的理由。
window.location
会使所有这些功能失效。设置 window.location.href = 'thepage.html'
与调用以下代码相同:
window.open('thepage.html', '_self');
即目标限制于同一窗口,因为这是位置属性所在的地方。这与未带有目标属性的链接单击具有相同的效果:
<a href="thepage.html">...</a>
window.open('thepage.html', '_blank');
<a href="thepage.html" target="_blank">...</a>
您也可以使用open方法打开一个新窗口。返回值是对该窗口的引用,因此您可以使用它来设置该窗口的位置,而不是当前窗口:
var w = window.open('about:blank', '_blank');
w.location.href = 'thepage.html';
除了上面的答案外,也不要忘记点击超链接(锚标签)将触发该元素的onclick
处理程序(如果有),而Javascript版本显然不会这样做,它只会更改窗口位置。
如果您想模拟点击,则可以从Javascript手动调用onclick处理程序,但必须记得手动执行此操作。您发布的代码片段在这方面可能有所不同,这可能是任何行为差异的原因。
使用锚点可以指定目标属性,但使用window.location.href则不行。 通常情况下,当用户想要将浏览器重定向到另一个位置时,会使用锚点;而在使用JavaScript进行重定向时,则使用window.location.href。
href
属性的 <a>
元素将导致浏览器导航到 href
中的 URL,无论 JavaScript 是否启用。document.referrer 包含了一个引用,指向包含用户点击链接以进入新页面的页面的 URL,既可以在服务器端也可以在客户端使用。而脚本化的位置方法则不包含此信息。