斜杠在URL中被转义

时间:2011-08-26 05:58:57

标签: javascript jquery url jquery-plugins slash

我在我的网络应用程序中使用了jquery.history插件并且有'/'被转义的问题,所以例如 我需要生成以下网址

/ SomeAction#资源/ ResOne

但得到了

/ SomeAction#资源%F2ResOne

用于加载我使用的网址

$ history.load(btn.attr( '动作名'));

其中 btn 元素具有属性action-name 'Resource / ResOne'(源代码中有'/'符号)

所以问题是如何实现'/'符号将保留在URL中? (当你从收件箱打开一些邮件时,这种方法在gmail中使用,所以请不要使用在服务器端使用解码技术的技术来回答)

由于

1 个答案:

答案 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 });

这是一个配置选项。 https://github.com/tkyk/jquery-history-plugin/wiki/How-to-use-the-forward-slash-instead-of-ugly-%27%252F%27

无论如何,祝你好运!