Ошибка Javascript в IE8: не реализована
Это действительно меня озадачивает, так как код выглядит совершенно безвредным.
IE8 останавливает выполнение script с сообщением:
Не реализовано. map.js line: 66 char: 5
Вот фрагмент кода:
63 if(data.map[x] !== undefined && data.map[x][y] !== undefined) {
64
65 left = (x - data.dim.x_min)*32 + 30;
66 top = (data.dim.y_max - y)*32 + 30;
67
68 /* do stuff */
XX }
информация об отладке: x: 263 data.dim.x_min: 263 y: 172 data.dim.y_max: 174
Данные - это объект, возвращаемый из вызова JQuery Ajax. Это работает в Firefox 3.0 и 3.5, Safari 4.0.2, и я нашел эту ошибку только при просмотре страницы в IE8. Принуждение IE8 в режим IE7 не приводит к ошибке.
У меня нет IE7 для отладки, но у меня есть тестер, который говорит, что он тоже не работает в IE7.
Ответы
Ответ 1
Переменная 'top', используемая в коде, является объектом типа DispHTMLWindow2 (внешний объект окна) и уже используется браузерами и вызывает конфликт, поскольку этот объект не может быть объектом операции присваивания. Похоже, что Firefox и Safari игнорируют это, в то время как IE не позволяет перезаписывать сценарии.
Решения для этого:
1) Объявите вершину, которую вы используете как локальную переменную, чтобы определить ее область, в которой она используется.
2) Переименуйте переменную на то, что не противоречит этому предопределенному глобальному.
Описание других имен переменных, которые вы не должны использовать
Ответ 2
В IE 8 есть отличный отладчик javascript. Возможно, вы захотите добавить точку останова где-то перед ошибкой и выполнить код, чтобы увидеть, что странно с данными. IE8 является придирчивым с концевыми запятыми в списках, поэтому может возникнуть ошибка. Вы можете вытащить отладчик с помощью F12, нажмите Script и выберите начало отладки. Вы можете добавить точку останова, щелкнув по краю, где указаны номера строк.