2016-05-20 7 views
0

Я пытаюсь написать небольшое расширение для Google Chrome для декодирования кодированного URL-адреса, отображаемого на Сайте. Я написал метод ядра в Java некоторое время назад и попытался преобразовать его в JavaScriptРасшифровать URL через расширение Chrome

function decodeURL(Encoded) { 
var Length = Encoded.length; 
var Counter = 0; 
var Character; 
var Decoded = ""; 
for (Counter = 0; Counter < Length; Counter++) { 
    Character = Encoded.charAt(Counter); 
    if (Character === 37 && Encoded.charAt(Counter + 1) === 50 && Encoded.charAt(Counter + 2) === 70) { 
     Counter += 2; 
     Decoded += "/"; 
    } else if (Character === 37 && Encoded.charAt(Counter + 1) === 51 && Encoded.charAt(Counter + 2) === 65) { 
     Counter += 2; 
     Decoded += ":"; 
    } else if (Character === 37 && Encoded.charAt(Counter + 1) === 50 && Encoded.charAt(Counter + 2) === 49) { 
     Counter += 2; 
     Decoded += "!"; 
    } else if (Character === 37 && Encoded.charAt(Counter + 1) === 50 && Encoded.charAt(Counter + 2) === 50) { 
     Counter += 2; 
     Decoded += "\""; 
    } else if (Character === 37 && Encoded.charAt(Counter + 1) === 50 && Encoded.charAt(Counter + 2) === 51) { 
     Counter += 2; 
     Decoded += "#"; 
    } else if (Character === 37 && Encoded.charAt(Counter + 1) === 50 && Encoded.charAt(Counter + 2) === 52) { 
     Counter += 2; 
     Decoded += "$"; 
    } else if (Character === 37 && Encoded.charAt(Counter + 1) === 50 && Encoded.charAt(Counter + 2) === 53) { 
     Counter += 2; 
     Decoded += "%"; 
    } else if (Character === 37 && Encoded.charAt(Counter + 1) === 51 && Encoded.charAt(Counter + 2) === 68) { 
     Counter += 2; 
     Decoded += "="; 
    } else if (Character === 37 && Encoded.charAt(Counter + 1) === 51 && Encoded.charAt(Counter + 2) === 70) { 
     Counter += 2; 
     Decoded += "?"; 
    } else { 
     Decoded += Character; 
    } 
return Decoded; 

} }

Вместо декодированного URL она ничего не возвращает (без ошибок и нет строки) Если у кого-то идея, где может быть ошибка, я был бы благодарен.

+0

я держал пари, что 'Encoded.length == 0 '- это? – messerbill

+0

Не работает encodingURIComponent/decodeURIComponent для этого? – Shilly

+1

У JavaScript есть собственные функции декодирования/кодирования. Не могли бы вы их использовать? [JavaScript decodeURIComponent() Функция] (http://www.w3schools.com/jsref/jsref_decodeuricomponent.asp) –

ответ

0

Перемещение вашего возвращения вне цикл:

function decodeURL(Encoded) { 
    var Length = Encoded.length; 
    var Character; 
    var Decoded = ""; 
    for (var Counter = 0; Counter < Length; Counter++) { 
     Character = Encoded.charAt(Counter); 
     if (Character === 37 && Encoded.charAt(Counter + 1) === 50 && Encoded.charAt(Counter + 2) === 70) { 
      Counter += 2; 
      Decoded += "/"; 
     } else if (Character === 37 && Encoded.charAt(Counter + 1) === 51 && Encoded.charAt(Counter + 2) === 65) { 
      Counter += 2; 
      Decoded += ":"; 
     } else if (Character === 37 && Encoded.charAt(Counter + 1) === 50 && Encoded.charAt(Counter + 2) === 49) { 
      Counter += 2; 
      Decoded += "!"; 
     } else if (Character === 37 && Encoded.charAt(Counter + 1) === 50 && Encoded.charAt(Counter + 2) === 50) { 
      Counter += 2; 
      Decoded += "\""; 
     } else if (Character === 37 && Encoded.charAt(Counter + 1) === 50 && Encoded.charAt(Counter + 2) === 51) { 
      Counter += 2; 
      Decoded += "#"; 
     } else if (Character === 37 && Encoded.charAt(Counter + 1) === 50 && Encoded.charAt(Counter + 2) === 52) { 
      Counter += 2; 
      Decoded += "$"; 
     } else if (Character === 37 && Encoded.charAt(Counter + 1) === 50 && Encoded.charAt(Counter + 2) === 53) { 
      Counter += 2; 
      Decoded += "%"; 
     } else if (Character === 37 && Encoded.charAt(Counter + 1) === 51 && Encoded.charAt(Counter + 2) === 68) { 
      Counter += 2; 
      Decoded += "="; 
     } else if (Character === 37 && Encoded.charAt(Counter + 1) === 51 && Encoded.charAt(Counter + 2) === 70) { 
      Counter += 2; 
      Decoded += "?"; 
     } else { 
      Decoded += Character; 
     } 

    } 
    return Decoded; 
} 
console.log(decodeURL("???$$$?")); 
Смежные вопросы