0

我有以下 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');

它接受一个passedUrl,然后将它与一组链接匹配以查看哪个与url最匹配,然后向其添加一个加载类。

这可以正常工作,除非链接中有空格,例如domain.com/People?Name=John Doe因为浏览器将其视为domain.com/People?Name=John%20Doe,因此当passedUrl 有转义空格而链接没有时,它不能正确匹配。

有想法该怎么解决这个吗?

4

2 回答 2

1

有想法该怎么解决这个吗?

利用

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

请参阅MDN 文档

于 2013-06-27T15:57:45.383 回答
0

尝试 JavaScript 的unescape功能,它似乎可以解码 URL 编码的字符串。

于 2013-06-27T15:45:18.713 回答