【问题标题】:Should I use window.navigate or document.location in JavaScript?我应该在 JavaScript 中使用 window.navigate 还是 document.location?
【发布时间】:2010-10-31 04:46:06
【问题描述】:

使用 JavaScript 更改当前网页位置的首选方法是什么?我已经看到使用了 window.navigate 和 document.location 。行为上有什么不同吗?浏览器实现有区别吗?

【问题讨论】:

    标签: javascript html navigation


    【解决方案1】:
    window.location.href = 'URL';
    

    是改变当前窗口位置的标准实现。

    【讨论】:

    • 您是否有参考表明 window.location.href 是标准实现?该标准是否同样适用于所有浏览器?您当然看起来知识渊博,并且 15 多票(加上接受的答案)有助于使其更具权威性,尽管我认为最好查看浏览器开发团队的文档来支持这一主张。
    • @Goyuix,说window.location.href 是完整的实现可能更准确,但window.location 完成同样的事情。参见docs.sun.com/source/816-6408-10/location.htm:“如果将字符串分配给对象的location 属性,JavaScript 会创建一个location 对象并将该字符串分配给它的href 属性。”
    • 看起来这些家伙认为这是个人喜好:developer.mozilla.org/Talk:en/DOM/window.location。或者查看底部附近的示例,他们只使用window.location,但这并不一定表示任何一种方式:developer.mozilla.org/en/window.location
    • 我目前正在使用它进行 android 开发。我无法在 Android 的默认浏览器中从 JS 重定向页面。我尝试了window.location.href = 'URL';window.location.assign('URL'); 旨在重新加载新页面的方法。更多信息可以找到w3schools.com/jsref/obj_location.asp
    • window.navigate 是 Internet Explorer 使用的专有方法(我注意到其他浏览器是否为了兼容性而模仿它,Chrome 没有)。 document.locationwindow.location 是标准对象(请参阅各种 HTML/HTML5/DOM 规范)。由于遗留代码,可能支持document.location = someURL(或window.location = someURL)。正确的做法是document.location.href = someURL,或者document.location.assign(someURL)
    【解决方案2】:

    某些浏览器不支持window.navigate

    在java脚本中有很多重定向的方法,见下面的代码 及说明

    window.location.href = "http://krishna.developerstips.com/";
    window.location = "http://developerstips.com/";
    window.location.replace("http://developerstips.com/");
    window.location.assign("http://work.developerstips.com/");
    

    window.location.href 从浏览器的缓存中加载页面,但不会 总是将请求发送到服务器。所以,如果你有旧版本 缓存中可用的页面,然后它将重定向到那里 而不是从服务器加载新页面。

    window.location.assign() 方法用于重定向(如果您想允许) 用户使用后退按钮返回到原始文档。

    window.location.replace() 方法,如果你想重定向到 新页面并且不允许用户导航到原始页面 使用返回按钮。

    【讨论】:

      【解决方案3】:

      window.location 也会影响框架,

      我找到的最好的形式是:

      parent.window.location.href
      

      更糟糕的是:

      parent.document.URL 
      

      我进行了大规模的浏览器测试,发现一些带有多个插件的罕见 IE 在第二种形式中未定义。

      【讨论】:

      • 按照这个逻辑,top.window.location.href 不是更好吗?
      【解决方案4】:

      window.location 将影响您的浏览器目标。 document.location 只会影响您的浏览器和框架/iframe。

      【讨论】:

        【解决方案5】:

        document.location 是一个(已弃用但仍然存在)只读字符串属性,已替换为 document.URL

        【讨论】:

        • 我找不到任何表明 document.location 已被弃用的信息。请添加来源。
        【解决方案6】:

        window.navigate 在某些浏览器中不受支持,因此应避免使用。使用 location 属性的任何其他方法都是最可靠和一致的方法

        【讨论】:

          【解决方案7】:

          我会选择window.location = "http://...";。几年来我一直在编写跨浏览器 JavaScript,但我从未遇到过使用这种方法的问题。

          window.navigatewindow.location.href 对我来说似乎有点奇怪。

          【讨论】:

          • window.location 有效,但它在技术上不正确,因为“位置”是一个对象。
          • 但是 JavaScript 中的一切都是对象 :)
          • 虽然在 JavaScript 中几乎所有东西都是一个对象,但将字符串分配给一个对象通常不会将值设置为其属性之一(就像 window.location 或 document.location 使用它们的 href 属性所做的那样) ,而是用字符串替换该对象。在这种情况下,添加了一个浏览器怪癖,以便与现有的(古怪的)实现和旧的(而不是旧的)内容兼容。
          【解决方案8】:

          真的没有区别;大约有 5 种不同的方法可以做到这一点。但是,我最常看到的是document.locationwindow.location,因为它们被所有主流浏览器支持。 (我个人没见过window.navigate在生产代码中使用,所以可能没有很好的支持?)

          【讨论】:

          • document.location 不适用于所有浏览器。 window.location 确实如此。
          • Firefox 不支持 window.navigate
          【解决方案9】:

          迟到了加入这个对话,以阐明面向网络、分析感知网站的一个稍微有趣的事实。将麦克风交给 Michael Papworth:

          https://github.com/michaelpapworth/jQuery.navigate

          “当使用网站分析时,window.location 是不够的,因为没有在请求中传递引用者。插件解决了这个问题,并允许使用别名和参数化 URL。”

          如果检查代码,它的作用是:

             var methods = {
                      'goTo': function (url) {
                          // instead of using window.location to navigate away
                          // we use an ephimeral link to click on and thus ensure
                          // the referer (current url) is always passed on to the request
                          $('<a></a>').attr("href", url)[0].click();
                      },
                      ...
             };
          

          尼托!

          【讨论】:

            【解决方案10】:

            document.location 的支持也很好,尽管它已被弃用。 我已经使用这种方法一段时间了,没有任何问题。 您可以参考这里了解更多详情:

            https://developer.mozilla.org/en-US/docs/Web/API/document.location

            【讨论】:

              【解决方案11】:

              您可以使用移动页面

              window.location.href =Url;
              

              【讨论】:

              • 这并没有真正添加更多信息然后被接受,并乘以赞成的答案......
              • 你甚至可以进一步辩称你只是抄袭了公认的答案
              猜你喜欢
              • 1970-01-01
              • 2013-07-12
              • 1970-01-01
              • 2020-05-11
              • 1970-01-01
              • 1970-01-01
              • 2017-11-12
              • 2012-03-10
              • 2010-12-27
              相关资源
              最近更新 更多