【问题标题】:URI encoded hashtag within url automatically decoded through PushStateurl 中的 URI 编码主题标签通过 PushState 自动解码
【发布时间】:2012-03-13 10:31:11
【问题描述】:
我正在尝试推送带有 url 编码主题标签的 URL(我正在构建 Twitter 客户端)。 History.js 显然将 URI 编码的主题标签 (%23) 视为 URL 中的哈希参数,因此 URL 会自动对它们进行解码,因此不会触发此类链接的状态更改。
例如,url /first/%23second 被转换为 /first/#second
如果不弄乱整个插件,我该怎么办?
【问题讨论】:
标签:
jquery
urlencode
history.js
【解决方案1】:
如果您在本地托管 History.js 文件,请在 m 对象上查找名为“unescapeString”的函数(或者只需 Ctrl+F 到“m.unescapeString”。
然后您可以将其更改为:
m.unescapeString=function(b){
var c=b,d;
if(!history.pushState){ //Adding this check.
for(;;) {
d = a.unescape(c);
if (d===c)
break;
c = d;
}
}
return c
}
这基本上可以解决您的问题。 (我相信这个方法是用来支持不支持history.pushState的浏览器)