我们在网络应用程序中使用了一些特殊字符:example.com/foo#вап
。
我们使用decodeURI(window.location.hash)
解析哈希(有时哈希包含未编码的特殊字符)并设置新值window.location.hash = "вап"
。
Chrome,Firefox,Opera甚至IE都能正常运行,但在Safari中我们会20?
而不是вап
。
如果像Safari window.location.hash = encodeURI("вап");
这样在Safari中设置哈希值有效,但当然它在Chrome,FF和其他设备中无效。
答案 0 :(得分:5)
最后我找到了解决方案。
如果通过window.location.href
设置哈希,一切正常。
以下是代码:
var newHash = ...
var sharpIdx = window.location.href.indexOf("#");
if (sharpIdx === -1) {
window.location.href = window.location.href + "#" + newHash;
} else {
window.location.href = window.location.href.substr(0, sharpIdx) + "#" + newHash;
}
答案 1 :(得分:0)
我遇到了同样的问题,找到了另一种解决方法
csv