2012-02-14 3 views
3

Я пытаюсь построил приложение WebSocket в IE9, но у меня есть следующий Javascript ошибка:Array.map не работает в IE9

IE9 консоль:

SCRIPT438: Object doesn't support property or method 'map' 
websock.js, line 211 character 5 

websock.js функция:

function send_string(str) { 
    //Util.Debug(">> send_string: " + str); 
    api.send(str.split('').map(
     function (chr) { return chr.charCodeAt(0); })); 
} 

Также в консоли IE9 str = the text I entered. и если я сначала попытаюсь разбить его, я получаю правильный массив строки, но карта еще не работает.

Например, если я пытаюсь отправить «текст»:

str.split("") = ['t','e','x','t'] 

И я нашел это в консоли. Но к сожалению .map не работает. Какие-либо предложения?

PS:

Я попытался изменить код W3School this link:

document.write(str.split("").map(
     function (chr) { return chr.charCodeAt(0); }) + "<br />"); 

И карта работает здесь с желаемым результатом использования IE9!

ответ

3

IE9 поддерживает карту, но, скорее всего, ваша html-страница отображается в режиме quirks. Вот почему. Попробуйте добавить doctype и посмотрите, разрешит ли это проблему.

+0

Я думаю, что вы правы, потому что после добавления 'if (! ('Map' в Array.prototype)) { Array.prototype.map = function (mapper, that/* opt * /) { var other = new Array (this.length); для (var i = 0, n = this.length; i glarkou

+0

Я обычно добавляю в настоящее время, и он позаботится об этом.См. Http://stackoverflow.com/questions/3726357/why-does-ie9-switch-to-compatibility-mode-on-my-website. Однако вы добавили эту функцию, чтобы сделать ее совместимой с IE8 и ниже. IE8 и ниже не имеют других функций, таких как indexOf, которые тоже укусят вас в будущем. – ustun

+0

Кроме того, если вы откроете Инструменты разработчика в IE, он скажет вам, в каком режиме он работает сейчас. – ustun

-1

FF реализует карта:

Array.prototype.hasOwnProperty('map') // true 

IE не реализует карту:

Array.prototype.hasOwnProperty('map') // false 

К сожалению, это, кажется, вы должны кодировать свои собственные map функции.

+0

но почему работает в w3schools? Я редактировал свой вопрос. Они каким-то образом анализируют функции и возвращают только выход? – glarkou

+0

https://developer.mozilla.org/ru/JavaScript/Reference/Global_Objects/Array/map MAP поддерживается IE9! – glarkou

+0

Вы пробовали приведенный выше код в консоли IE9? – sinsedrix

0

Согласно the ES5 compatibility table, IE9 поддерживает Array#map. Посетите http://kangax.github.com/es5-compat-table/ и посмотрите в столбце «Этот браузер».

Убедитесь, что браузер находится в режиме IE9.

+0

но почему работает в w3schools? Я редактировал свой вопрос. Они каким-то образом анализируют функции и возвращают только выход? Кстати, сайт, который вы мне дали, показывает, что 'Array.prototype.map' поддерживается IE9 – glarkou

+0

https://developer.mozilla.org/en/JavaScript/Reference/Global_Objects/Array/map MAP поддерживается IE9! – glarkou

Смежные вопросы