23

我有一些 javascript 代码,有时会设置window.location.hash为特定的字符串。这在 Firefox 3 中运行良好,但我想知道以后是否会遇到问题,即这是一个跨浏览器解决方案(包括 IE6)吗?

另外,我正在使用ReallySimpleHistory。这会扰乱它的内部状态吗?

谢谢

4

5 回答 5

25

window.location.hash自从 1995 年在 Netscape Navigator 2 中引入 JavaScript 以来,它就一直存在。Microsoft 于 1996 年在 Internet Explorer 3 中首次支持它。我认为您可以合理地确定每个支持 JS 的浏览器都支持它。

从源代码的快速浏览来看,ReallySimpleHistory 似乎非常广泛地使用了这个属性,所以你很可能会破坏它。您可能想改用它的add(newLocation)方法(通过设置工作window.location.hash)。

于 2009-08-12T10:49:31.430 回答
15

得到:

 var hash = location.hash.slice(1);

放:

 location.hash = '#' + 'string';
于 2009-08-11T23:25:05.447 回答
13

我知道旧线程,但window.location.hash也受到大小限制。如果您要传递大量数据,并希望在哈希中保存状态,您可能会遇到一些问题。

IE 会给你一个错误: SCRIPT5 - Access denied.如果你试图分配一个超过限制的哈希值,这是非常有用的。

只是思考的食物。

于 2013-06-07T19:33:33.773 回答
4

所有“现代”(又名 A-Graded)浏览器都允许设置哈希并且在这样做时不重新加载页面。重新加载页面的是一些较旧的页面,例如Safari 2.0.4Opera 8.5x

请参阅我的 Usenet 帖子,了解我在comp.lang.javascript哪里更详细地解释它。

另请注意,HTML5 最终指定 hash setter 应该更改实际的 hash 但不重新加载页面

于 2009-08-12T19:29:44.137 回答
3

设置window.location.hash在 IE6 和 IE7 中运行良好。

在某些情况下,window.location.hash在IE6下读取设置后会返回旧值,但浏览器已经设置哈希成功。一个例子:

alert(window.location.hash);
window.location.hash = '#newHash';

/* Sometimes, it will return the old value,
   I haven't figured out why it does that, and
   it's rather rare. */
alert(window.location.hash);

如果你只是用它来设置它,你不应该遇到任何问题。

于 2009-08-11T23:28:04.677 回答