我在哪里可以找到支持此行为的文档?

时间:2011-10-14 01:48:38

标签: javascript

我正在查看一些以前的开发人员代码,我遇到了这一行:

location.href = '#' + variable;

具有更新location.hash的效果。删除“#”,当然它会重定向到不存在的网址。玩了一下似乎我可以通过location.href设置哈希,只要该值以'#'开头即可。这条线或类似的东西使用了很多,但我似乎找不到任何支持这种更新location.hash行为的文档,方法是设置location.href

我希望看到一些显示这不仅仅是一个幸运的事故,这是有效的,所以我不必重新编码所有使用它的情况。你可以链接我的任何东西都会有所帮助。

最好只更改这些以正确设置location.hash吗?

Thnks

4 个答案:

答案 0 :(得分:2)

这是因为将location.href设置为 value 应该与单击href = value 的链接具有相同的行为;它不应该替换地址栏的内容,因为每次你想使用location.href时你都必须建立绝对URL。

将值分配给locationlocation.href显然是在Javascript 1.0中,所以完全有可能在任何地方都没有正确指定 - Mozilla或Microsoft文档都没有详细说明。 HTML5 specifies the behaviour,很可能是追溯性的。

答案 1 :(得分:1)

这是一个开始您的位置属性之旅的好地方。

https://developer.mozilla.org/en/window.location

顺便说一句,#something是一个有效的网址,并为window.location分配一个新的网址,导致浏览器导航到新目的地。

#something被称为哈希并将浏览器指向当前文档上的锚点,如果锚点不存在则指向文档顶部。

答案 2 :(得分:0)

http://docstore.mik.ua/orelly/webprog/DHTML_javascript/0596004672_jvdhtmlckbk-chp-10-sect-2.html

所以当你将location.href设置为一个不被视为绝对路径的东西时会发生什么。浏览器会自动将当前网址放在您尝试设置的任何值之前。

所以“#section1”=“www.mysitethatistoocoolforschool.com#section1”

和“section1”=“www.mysitethatistoocoolforschool.comsection1”(这不存在)

答案 3 :(得分:0)

这个带有'#'字符的网址称为基于锚点的网址,它们不应该将用户从网页重定向,而只是通过某种偏移更新网页的位置,与设置相同你引用的location.hash

正如Sii所说,这是有效的,因为当您更改location.href值时,就像您点击链接一样,那么您有以下等价物:

<a href="#toc" >Go to Table of Contents</a>

与:

相同
location.href = "#toc";

它们都会导致您的location.hash变量的值为toc