我在我的网络应用程序中使用了 jquery.history 插件,但遇到了“/”被转义的问题,例如 我需要生成以下 URL
/SomeAction#Resource/ResOne
但是得到了
/SomeAction#Resource%F2ResOne
用于加载我使用的 URL
$.history.load(btn.attr('action-name'));
其中 btn 元素具有属性 action-name 'Resource/ResOne'(它在源代码中具有 '/' 符号)
那么问题是如何实现“/”符号将保留在 URL 中? (当您打开收件箱中的某些邮件时,这种方法在 gmail 中使用,所以请不要使用在服务器端使用解码技术的技术来回答)
谢谢
最佳答案
decodeURIComponent 本身可能无济于事。查看插件,具体来说,让我们查看“locationWrapper”。这是当您添加“加载”一个 URL 时可能被调用的事情之一。
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
};
注意到编码器部分了吗?您需要以某种方式覆盖它,或者更换编码器。快速浏览一下代码,它看起来并不过分“扩展”友好。因此,根据该代码,即使您将 Action 名称“解码”一百万次也没关系,它仍然会再次对其进行编码。
编辑:刚在 wiki 上找到这个:
$.history.init(callback, { unescape: true });
无论如何,祝你好运!
关于javascript - URL 中的斜杠被转义,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7200552/