【发布时间】:2010-10-31 04:46:06
【问题描述】:
使用 JavaScript 更改当前网页位置的首选方法是什么?我已经看到使用了 window.navigate 和 document.location 。行为上有什么不同吗?浏览器实现有区别吗?
【问题讨论】:
标签: javascript html navigation
使用 JavaScript 更改当前网页位置的首选方法是什么?我已经看到使用了 window.navigate 和 document.location 。行为上有什么不同吗?浏览器实现有区别吗?
【问题讨论】:
标签: javascript html navigation
window.location.href = 'URL';
是改变当前窗口位置的标准实现。
【讨论】:
window.location.href 是完整的实现可能更准确,但window.location 完成同样的事情。参见docs.sun.com/source/816-6408-10/location.htm:“如果将字符串分配给对象的location 属性,JavaScript 会创建一个location 对象并将该字符串分配给它的href 属性。”
window.location,但这并不一定表示任何一种方式:developer.mozilla.org/en/window.location。
window.location.href = 'URL'; 和window.location.assign('URL'); 旨在重新加载新页面的方法。更多信息可以找到w3schools.com/jsref/obj_location.asp
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)。
某些浏览器不支持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() 方法,如果你想重定向到 新页面并且不允许用户导航到原始页面 使用返回按钮。
【讨论】:
window.location 也会影响框架,
我找到的最好的形式是:
parent.window.location.href
更糟糕的是:
parent.document.URL
我进行了大规模的浏览器测试,发现一些带有多个插件的罕见 IE 在第二种形式中未定义。
【讨论】:
window.location 将影响您的浏览器目标。
document.location 只会影响您的浏览器和框架/iframe。
【讨论】:
document.location 是一个(已弃用但仍然存在)只读字符串属性,已替换为 document.URL。
【讨论】:
document.location 已被弃用的信息。请添加来源。
window.navigate 在某些浏览器中不受支持,因此应避免使用。使用 location 属性的任何其他方法都是最可靠和一致的方法
【讨论】:
我会选择window.location = "http://...";。几年来我一直在编写跨浏览器 JavaScript,但我从未遇到过使用这种方法的问题。
window.navigate 和 window.location.href 对我来说似乎有点奇怪。
【讨论】:
真的没有区别;大约有 5 种不同的方法可以做到这一点。但是,我最常看到的是document.location 和window.location,因为它们被所有主流浏览器支持。 (我个人没见过window.navigate在生产代码中使用,所以可能没有很好的支持?)
【讨论】:
迟到了加入这个对话,以阐明面向网络、分析感知网站的一个稍微有趣的事实。将麦克风交给 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();
},
...
};
尼托!
【讨论】:
对document.location 的支持也很好,尽管它已被弃用。
我已经使用这种方法一段时间了,没有任何问题。
您可以参考这里了解更多详情:
https://developer.mozilla.org/en-US/docs/Web/API/document.location
【讨论】:
您可以使用移动页面
window.location.href =Url;
【讨论】: