indexOf()不再工作了

时间:2013-05-23 06:55:00

标签: javascript google-chrome-extension

我的代码为

function tabsUpdated(tabId, changeInfo, tab) {
    if(changeInfo.status != "complete") return;

    console.log(tab.url);
        //displays 'http://www.entraineurdefootonline.fr/League/Transferlist/'

    console.log(tab.url.indexOf('League/TransferList')); //displays -1

    if (tab.url.indexOf('League/TransferList') > -1){
        chrome.pageAction.show(tab.id)
        loadScripts(tabId);
    }
}

正如您所看到的,tab.url.indexOf('League/TransferList')返回-1,它应返回36。它非常奇怪,它在数周内运行良好,今天还在做任何改变。我做了fiddle,证明问题不是来自代码。我尝试删除并重新加载扩展名(使用load unpacked扩展名)。

也许有人已经遇到过这种奇怪的现象?

2 个答案:

答案 0 :(得分:1)

你只是有大写和小写字母的问题。在网址中,Transferlist显示小写l,而您使用大写TransferList检查L

作为一种解决方案,您可以使用toLowerCase()(或大写使用toUpperCase()将所有字​​符串转换为小写字母,然后再进行比较:

// ...
if (tab.url.toLowerCase().indexOf('League/TransferList'.toLowerCase()) > -1){
// ...

答案 1 :(得分:1)

要添加其他答案,如果您的字符串可以是大写或小写,那么您可以根据需要使用快速不区分大小写的正则表达式:

if (/transferlist/i.test(tab.url)) {
  ...
}