我应该在JavaScript中使用window.navigate还是document.location?

dth*_*her 172 html javascript navigation

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

Jam*_*ore 215

window.location.href = 'URL';
Run Code Online (Sandbox Code Playgroud)

是更改当前窗口位置的标准实现.

  • 您是否有引用指示window.location.href是标准实现?这个标准同样适用于所有浏览器吗?你当然看起来知识渊博,15票以上(加上已接受的答案)有助于使其更具权威性,但我认为从浏览器开发团队查看文档以备份索赔会更好. (22认同)
  • @Goyuix,可能更准确地说'window.location.href`是完整的实现,但是`window.location`完成同样的事情.请参阅http://docs.sun.com/source/816-6408-10/location.htm:"如果将字符串分配给对象的`location`属性,JavaScript会创建一个`location`对象并指定该字符串到它的`href`属性." (6认同)
  • 看起来这些家伙认为这是个人偏好:https://developer.mozilla.org/Talk:en/DOM/window.location.或者查看底部附近的示例,它们只使用`window.location`,但这并不一定表示任何一种方式:https://developer.mozilla.org/en/window.location. (3认同)
  • `window.navigate`是一种专有方法,由Internet Explorer使用(我注意到其他浏览器是否模仿兼容性,Chrome没有).`document.location`或`window.location`是标准对象(参见各种HTML/HTML5/DOM规范).由于遗留代码,可能支持`document.location = someURL`(或`window.location = someURL`).正确的方法是`document.location.href = someURL`,或者也许是`document.location.assign(someURL)`. (3认同)

ken*_*bec 7

document.locatio n是一个(已弃用但仍然存在)只读字符串属性,由document.url替换.

  • 我找不到任何表明“document.location”已弃用的信息。请添加来源。 (5认同)

小智 6

window.location会影响您的浏览器目标.document.location只会影响您的浏览器和frame/iframe.


小智 6

window.location 也影响到框架,

我找到的最好的形式是:

parent.window.location.href
Run Code Online (Sandbox Code Playgroud)

更糟糕的是:

parent.document.URL 
Run Code Online (Sandbox Code Playgroud)

我做了一个大规模的浏览器测试,一些罕见的IE与几个插件使用第二种形式未定义.


Sri*_*hna 5

某些浏览器不支持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/");
Run Code Online (Sandbox Code Playgroud)

window.location.href从浏览器的缓存加载页面,并且并不总是将请求发送到服务器。因此,如果缓存中有可用的旧版本页面,则它将重定向到该页面,而不是从服务器加载新页面。

如果要允许用户使用“后退”按钮返回到原始文档,则使用window.location.assign()方法进行重定向。

如果您要重定向到新页面并且不允许用户使用“后退”按钮导航到原始页面,请使用window.location.replace()方法。