【问题标题】:Slash being escaped in URL斜线在 URL 中被转义
【发布时间】:2011-11-04 06:13:43
【问题描述】:

我在我的网络应用程序中使用 jquery.history 插件,并且遇到了“/”被转义的问题,例如 我需要生成以下 URL

/SomeAction#Resource/ResOne

但是得到了

/SomeAction#Resource%F2ResOne

用于加载我使用的 URL

$.history.load(btn.attr('action-name'));

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

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

谢谢

【问题讨论】:

    标签: javascript jquery url jquery-plugins slash


    【解决方案1】:

    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
    };
    

    注意到编码器部分了吗?您需要以某种方式覆盖它,或者更换编码器..快速浏览一下代码,它看起来并不过分“扩展”友好。因此,根据该代码,即使您将动作名称“解码”一百万次也没关系,它仍然会再次对其进行编码。

    编辑:刚刚在 wiki 上找到了这个:

    $.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

    无论如何,祝你好运!

    【讨论】:

      猜你喜欢
      • 2019-07-28
      • 2015-01-24
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2022-06-22
      • 2020-07-30
      相关资源
      最近更新 更多