我有一些javascript代码,它们一度将window.location.hash
设置为特定的字符串。这在Firefox 3中运行良好,但我想知道我以后是否会遇到问题,即这是一个跨浏览器的解决方案(包括IE6)?
另外,我正在使用ReallySimpleHistory。这会搞乱其内部状态吗?
由于
答案 0 :(得分:25)
window.location.hash
。它于1996年首次得到Microsoft在Internet Explorer 3中的支持。我认为你可以合理地确定每个支持JS的浏览器都支持它
从快速浏览源代码看,ReallySimpleHistory看起来好像广泛使用了这个属性,所以你可能会破坏它。您可能希望使用其add(newLocation)
方法(通过设置window.location.hash
)。
答案 1 :(得分:15)
获取:强>
var hash = location.hash.slice(1);
设置:强>
location.hash = '#' + 'string';
答案 2 :(得分:10)
我知道旧线程,但window.location.hash
也受到大小限制。如果您传递大量数据,并希望在哈希中保存状态,则可能会遇到一些问题。
IE会给你错误:
SCRIPT5 - Access denied.
如果您尝试分配超出限制的哈希值
这是非常有用的。
只是值得深思。
答案 3 :(得分:4)
所有“现代”(a.k.a A-Graded)浏览器都允许设置哈希,并且在执行此操作时不会重新加载页面。那些重新加载页面的是一些旧的,例如 Safari 2.0.4 和 Opera 8.5x 。
请参阅my Usenet post on comp.lang.javascript
,我会在其中详细解释一下。
另请注意,HTML5最终指定哈希设置器应更改实际哈希,但不会重新加载页面。
答案 4 :(得分:3)
设置window.location.hash
在IE6& IE7。
在某些情况下,在一组之后立即在IE6下阅读window.location.hash
将返回旧值,但浏览器已成功设置哈希值。一个例子:
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);
如果你只是用它来设置它,你不应该遇到任何问题。