我在我的网络应用程序中使用了jquery.history插件并且有'/'被转义的问题,所以例如 我需要生成以下网址
/ SomeAction#资源/ ResOne
但得到了
/ SomeAction#资源%F2ResOne
用于加载我使用的网址
$ history.load(btn.attr( '动作名'));
其中 btn 元素具有属性action-name 'Resource / ResOne'(源代码中有'/'符号)
所以问题是如何实现'/'符号将保留在URL中? (当你从收件箱打开一些邮件时,这种方法在gmail中使用,所以请不要使用在服务器端使用解码技术的技术来回答)
由于
答案 0 :(得分:2)
decodeURIComponent本身可能无济于事。看一下插件,具体来说,让我们来看看'locationWrapper'。当您添加“加载”网址时,这是可能被调用的内容之一。
var locationWrapper = {
put: function(hash, win) {
(win || window).location.hash = this.encoder(hash);
},
get: function(win) {
var hash = ((win || window).location.hash).replace(/^#/, '');
try {
return $.browser.mozilla ? hash : decodeURIComponent(hash);
}
catch (error) {
return hash;
}
},
encoder: encodeURIComponent
};
注意编码器部分?你需要以某种方式覆盖它,或者替换编码器..从快速浏览一下代码,它看起来并不过分'延伸'友好。因此,根据该代码,如果你将动作名称“解码”一百万次并不重要,它仍然会再次编码。
编辑:刚刚在维基上找到了这个:
$.history.init(callback, { unescape: true });
无论如何,祝你好运!