Javascript:设置location.href与location

2020/10/03 16:21 · javascript ·  · 0评论

什么时候设置locationURL字符串而不是设置location.href

location = "http://www.stackoverflow.com";

location.href = "http://www.stackoverflow.com";

Mozilla开发人员网络参考

您可能会location直接设置,因为它稍短一些。如果您想简洁,通常也可以省略window.

URL分配到两个location.hreflocation被定义为工作在JavaScript 1.0,早在网景2,并已在因为每一个浏览器来实现。因此,请选择并使用最清晰的内容。

即使两者都能工作,我还是会使用后者。
location是一个对象,将字符串分配给对象对于可读性或维护性而言并不是一个好兆头。

就像已经说过的,location是一个物体但是那个人建议使用两者之一。 但是,使用该.href版本会更好

对象具有默认属性,如果没有其他说明,则假定为默认属性。对于该location对象,它具有称为的属性.href通过在分配过程中未指定ANY属性,默认情况下它将采用“ href”。

一切都很好,直到以后的对象模型版本更改并且不再有默认属性或更改了默认属性为止。然后您的程序意外中断。

如果您的意思是href,您应该指定href

几年前,它location在IE中对我不起作用,并且location.href确实起作用(并且在其他浏览器中均起作用)。从那时起,我一直只使用过location.href,不再遇到麻烦。我不记得那个版本的IE。

但是要记住一个区别。

假设您要使用当前URL构建一些URL。实际上,以下代码将重定向您,因为它不是在调用String.replace而是Location.replace

nextUrl = window.location.replace('/step1', '/step2');

以下代码有效:

// cast to string
nextUrl = (window.location+'').replace('/step1', '/step2');

// href property
nextUrl = window.location.href.replace('/step1', '/step2');

只是为了澄清,你不能这样做location.split('#')location是一个对象,而不是字符串。但是您可以这样做,location.href.split('#');因为它location.href是一个字符串。

与打字稿使用window.location.hrefwindow.location在技术上包含一个对象:

Properties
hash 
host 
hostname
href    <--- you need this
pathname (relative to the host)
port 
protocol 
search 

设置window.location将产生类型错误,而
window.location.href字符串类型。

资源

本文地址:http://javascript.askforanswer.com/javascriptshezhilocation-hrefyulocation.html
文章标签:
版权声明:本文为原创文章,版权归 javascript 所有,欢迎分享本文,转载请保留出处!

文件下载

老薛主机终身7折优惠码boke112

上一篇:
下一篇:

评论已关闭!