charCode не поддерживается в IE? - PullRequest
1 голос
/ 19 ноября 2010

Я использую следующую функцию для кодирования строк в base64:

encode: function(input) {
    var output = "";
    var chr1, chr2, chr3;
    var enc1, enc2, enc3, enc4;
    var i = 0;

    do {
        chr1 = input.charCodeAt(i++);
        chr2 = input.charCodeAt(i++);
        chr3 = input.charCodeAt(i++);

        enc1 = chr1 >> 2;
        enc2 = ((chr1 & 3) << 4) | (chr2 >> 4);
        enc3 = ((chr2 & 15) << 2) | (chr3 >> 6);
        enc4 = chr3 & 63;

        if (isNaN(chr2)) {
            enc3 = enc4 = 64;
        } else if (isNaN(chr3)) {
            enc4 = 64;
        }

        output = output + this.keyStr.charAt(enc1) + this.keyStr.charAt(enc2) + this.keyStr.charAt(enc3) + this.keyStr.charAt(enc4);
    } while (i < input.length);

    return output;
}

Однако в IE я получаю следующую ошибку:

 chr1 = input.charCodeAt(i++);
 "Object doesn't supported by this property or method".

Не могли бы вы помочь мне исправить это? Похоже, что функция charCodeAt не работает.

Спасибо за ваше время.

Ответы [ 2 ]

1 голос
/ 19 ноября 2010

Конечно выглядит , как будто IE поддерживает String#charCodeAt(): w3schools и MSDN .

Что такое typeof input?

0 голосов
/ 19 ноября 2010

Если вы действительно должны сделать это в

input.charAt(i++).escape()

будет делать то, что вы хотите.

Однако это не работает на символах Юникода, но в темные дни IE 5.4 и ниже, Unicode почти не существовало.

Если вы работаете в> = IE 5.5, то проблема не в charCodeAt(), а в другой части вашего кода.Что такое input?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...