在URL中的特殊字符在Safari(Special characters in url in Saf

2019-08-18 20:12发布

我们使用了一些特殊字符,在我们这样的Web应用程序: example.com/foo#вап

我们分析使用哈希decodeURI(window.location.hash)有时哈希含有不编码特殊字符),并设置如新价值window.location.hash = "вап"

一切都在Chrome,Firefox,Opera和IE浏览器甚至工作正常,但在Safari中,我们得到20? 代替вап

如果在Safari设定散列喜欢window.location.hash = encodeURI("вап"); 它的工作原理,但当然不会在Chrome中,FF等人的作品。

Answer 1:

最后,我找到了解决办法。 如果通过设置散列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;
}


Answer 2:

我曾经面临同样的问题,发现了另一个解决办法

window.location.hash = path;
// For safari url change fix
if (window.location.hash !== path) {
    window.location.hash = encodeURI(path);
}


文章来源: Special characters in url in Safari