window.location.href vs点击一个Anchor

时间:2009-11-03 13:44:56

标签: javascript

点击之间有什么区别:

<a href />

VS

致电window.location.href = ...

6 个答案:

答案 0 :(得分:40)

出于各种原因,您应尽可能使用<a href="foo.html">而不是window.location.href

  1. 如果您禁用了javascript,则无法使用任何链接。
  2. 蜘蛛游戏,例如Google Bot,不会解释javascript,因此他们不会关注您的任何链接。
  3. 它打破了互联网。不,实际上 - 全球 Web 是建立在页面之间可发现的联系的基础之上的。隐藏这些与非标准错误链接的联系违背了这个前提。
  4. 这会带来糟糕的用户体验:用户希望当他们将鼠标悬停在链接上时,他们可以访问以下信息:
    • 状态栏中显示的目的地(非常重要!)
    • 右键单击 - &gt;复制链接位置
    • 中键点击 - &gt;打开新标签
    • 使用window.location打破所有这些
  5. 这更容易!

答案 1 :(得分:5)

设置window.location.href = 'thepage.html'与调用相同:

window.open('thepage.html', '_self');

即。目标仅限于同一窗口,因为它是location属性的位置。这与单击没有目标属性的链接具有相同的效果:

<a href="thepage.html">...</a>

您可以使用open方法来指定其他目标,例如新窗口:

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';

答案 2 :(得分:1)

不要忘记,除了上述答案之外,点击超链接(锚标记)将触发该元素的onclick处理程序(如果有的话),而Javascript版本显然没有,只是更改了窗口的位置。

如果您想模拟点击,可以从Javascript手动调用onclick处理程序,但您必须记住手动执行此操作。您发布的片段在这方面会有所不同,这可能是导致任何行为差异的原因。

答案 3 :(得分:0)

使用锚点你可以指定目标属性,但是使用window.location.href你不能。 通常,当用户想要将浏览器重定向到另一个位置时使用锚点,当使用javascript完成重定向时使用window.location.href。

答案 4 :(得分:0)

除了给出的其他答案之外,点击<a>元素且指定了href属性将导致浏览器导航到href中的网址,无论是否JavaScript启用与否。

答案 5 :(得分:0)

document.referrer包含服务器和客户端对页面网址的引用,该网页包含用户点击进入新网页的链接 - 脚本化的定位方法没有。