2013-05-23 5 views
-1

У меня есть расширение хром с этим кодом:IndexOf() не работает больше

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, что доказывает, что проблема не в коде. Я попытался удалить и перезагрузить расширение (с расширением загрузки без распаковки).

Возможно, кто-то уже сталкивался с такой странностью?

+2

'«TransferList'' против '» Transferlist'': 'indexOf' чувствительны к регистру – Zeta

+0

я получаю 36 из вашей скрипки –

+0

«Transferlist. " просто Опечатка: «TransferList» –

ответ

1

У вас проблема с буквами верхнего и нижнего регистра. В URL-адресе указывается Transferlist с нижним регистром l, в то время как вы проверяете TransferList с верхним регистром L.

В качестве решения можно преобразовать все строки в нижний регистр, используя toLowerCase() (или верхний регистр, используя toUpperCase(), прежде чем их сравнения:

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

Я чувствую себя глупо, я буду использовать toLowerCase(), прежде чем сравнивать, спасибо. – Michael

1

Чтобы добавить к другим asnwers, если ваша строка может быть верхней или нижней так, то вы могли бы использовать быстрое регистронезависимый регулярное выражение, если это необходимо:

if (/transferlist/i.test(tab.url)) { 
    ... 
} 
Смежные вопросы