使用JavaScript indexOf匹配转义的空格

时间:2013-06-27 15:42:37

标签: javascript

我有以下JavaScript代码:

var matchArray = [];
var passedUrl = '/' + url;
var tabLink;

$('.uiAjaxTabs li a').each(function () {
    if (passedUrl.indexOf($(this).attr('href')) == 0) {
        boverlap_penalty = passedUrl.replace($(this).attr('href'), '').length;
        matchArray.push({ 'score': boverlap_penalty, 'dom_obj': this });
    }
});

if (matchArray.length) {
    tabLink = matchArray.sort(function (a, b) {
        return (a.score < b.score) ? -1 : 1
    }).shift().dom_obj;
}

$(tabLink).parents('li').addClass('loading');

使用passUrl然后将其与一组链接进行匹配,以查看哪个链接最匹配,然后为其添加一类加载。

除非链接中有空格,否则这种方法可以正常工作,例如domain.com/People?Name=John Doe,因为浏览器将其视为domain.com/People?Name=John%20Doe,因此当passUrl具有转义空格且链接没有时,浏览器无法正确匹配。

有关如何解决此问题的任何想法?

2 个答案:

答案 0 :(得分:1)

  

有关如何解决此问题的任何想法?

使用

var passedUrl = decodeURI('/' + url);

请参阅MDN docs

答案 1 :(得分:0)

尝试使用JavaScript的unescape函数,它似乎可以解码URL编码的字符串。