Javascript:设置location.href与位置
你什么时候将location
设置为URLstring与设置location.href
?
location = "http://www.stackoverflow.com";
VS
location.href = "http://www.stackoverflow.com";
Mozilla开发者networking参考
您可以直接设置location
,因为它略短。 如果你想要简洁,通常可以省略window.
太。
location.href
到location.href
和location
URL分配定义为在JavaScript 1.0中工作,在Netscape 2中工作,并且在每个浏览器中都已经实现。 所以,你可以select并使用你最清楚的地方。
即使两者都工作,我会用后者。 location
是一个对象,并且将一个string分配给一个对象对于可读性或维护来说不是一个好兆头。
就像已经说过的那样, 。 location
是一个对象但那个人build议使用。 但是,您将会更好地使用.href
版本。
对象具有默认属性,如果没有其他指定,则假定它们。 在 location
对象的情况下,它有一个名为.href
的属性。而且在赋值过程中不指定任何属性,默认情况下它将假定为“href”。
这一切都很好,直到稍后的对象模型版本发生更改,并且不再是默认属性,或者默认属性发生更改。 然后你的程序意外中断。
如果你的意思是href
,你应该指定href
。
几年前, location
不适合我在IE和location.href
(并在其他浏览器)。 从那以后,我一直使用location.href
,从来没有麻烦。 我不记得是哪个版本的IE。
只是为了澄清,你不能做location.split('#')
, location
是一个对象,而不是一个string。 但是你可以做location.href.split('#');
因为location.href
是一个string。
不过要记住一点。
假设您想使用当前的URL构build一些URL。 下面的代码实际上会redirect你,因为它不是调用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');