我有一些 javascript 代码,有时会设置window.location.hash
为特定的字符串。这在 Firefox 3 中运行良好,但我想知道以后是否会遇到问题,即这是一个跨浏览器解决方案(包括 IE6)吗?
另外,我正在使用ReallySimpleHistory。这会扰乱它的内部状态吗?
谢谢
我有一些 javascript 代码,有时会设置window.location.hash
为特定的字符串。这在 Firefox 3 中运行良好,但我想知道以后是否会遇到问题,即这是一个跨浏览器解决方案(包括 IE6)吗?
另外,我正在使用ReallySimpleHistory。这会扰乱它的内部状态吗?
谢谢
window.location.hash
自从 1995 年在 Netscape Navigator 2 中引入 JavaScript 以来,它就一直存在。Microsoft 于 1996 年在 Internet Explorer 3 中首次支持它。我认为您可以合理地确定每个支持 JS 的浏览器都支持它。
从源代码的快速浏览来看,ReallySimpleHistory 似乎非常广泛地使用了这个属性,所以你很可能会破坏它。您可能想改用它的add(newLocation)
方法(通过设置工作window.location.hash
)。
得到:
var hash = location.hash.slice(1);
放:
location.hash = '#' + 'string';
我知道旧线程,但window.location.hash
也受到大小限制。如果您要传递大量数据,并希望在哈希中保存状态,您可能会遇到一些问题。
IE 会给你一个错误:
SCRIPT5 - Access denied.
如果你试图分配一个超过限制的哈希值,这是非常有用的。
只是思考的食物。
所有“现代”(又名 A-Graded)浏览器都允许设置哈希并且在这样做时不重新加载页面。重新加载页面的是一些较旧的页面,例如Safari 2.0.4和Opera 8.5x。
请参阅我的 Usenet 帖子,了解我在comp.lang.javascript
哪里更详细地解释它。
另请注意,HTML5 最终指定 hash setter 应该更改实际的 hash 但不重新加载页面。
设置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);
如果你只是用它来设置它,你不应该遇到任何问题。