【问题标题】:window.location.href vs clicking on an Anchorwindow.location.href 与单击锚点
【发布时间】:2010-12-12 15:37:09
【问题描述】:

点击有什么区别:

<a href />

对比

致电window.location.href = ...

?

【问题讨论】:

    标签: javascript


    【解决方案1】:

    您应该尽可能使用&lt;a href="foo.html"&gt; 而不是window.location.href,原因有很多。

    1. 如果您禁用了 javascript,则所有链接都不起作用。
    2. 蜘蛛(例如 Google Bot)不会解释 javascript,因此它们不会跟踪您的任何链接。
    3. 它破坏了互联网。不,真的 - World Wide Web 是建立在页面之间可发现链接的基础之上的。用非标准的.. err, links 隐藏这些链接,违背了这个前提。
    4. 这会导致糟糕的用户体验:用户期望当他们将鼠标悬停在链接上时,他们可以访问某些信息:
      • 状态栏中显示的目的地(非常重要!)
      • 右击->复制链接位置
      • 中键->打开新标签
      • 使用window.location 会破坏所有这些
    5. 更简单!

    【讨论】:

    • 很好的答案。我还会添加 Shift+Click 在新窗口中打开和 Ctrl+Click 在新选项卡中打开。
    • 我还会在该列表中添加可访问性,我认为 JavaScript 重定向永远不会被屏幕阅读器猜到,例如,当具有适当属性的 HTML 锚点是
    【解决方案2】:

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

    【讨论】:

      【解决方案3】:

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

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

      【讨论】:

        【解决方案4】:

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

        【讨论】:

        • 嗯,这是真的,但有点误导。您通过调用方法的对象在 Javascript 版本中隐式选择目标。 window.location.href 更改当前窗口,但 mytarget.location.href 会更改另一个窗口/框架(假设变量已正确声明)。
        • 无论如何,你不应该使用 target 属性。
        • 谁说的?无论如何,他要求差异,这是其中之一,所以请继续投票,但这是正确的。 @dtsazza:你是对的,但他说的是 window.location 而不是 somethingElse.location
        • @mck:是的,因此我的第一句话是捏造的。严格来说,您是对的,但我从“javascript vs anchor-clicking”的更广泛意义上解释了这个问题;您提到的限制通常不适用于 Javascript 方法。 (虽然我根本没有投票,但我认为你的答案不值得投票,只是澄清一下。:-))
        【解决方案5】:

        除了给出的其他答案之外,单击指定了href 属性的&lt;a&gt; 元素将导致浏览器导航到href 中的URL,无论是否启用了JavaScript。

        【讨论】:

          【解决方案6】:

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

          【讨论】:

            猜你喜欢
            • 2016-02-18
            • 2018-11-03
            • 1970-01-01
            • 2012-05-07
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 2013-01-15
            相关资源
            最近更新 更多