Ошибка Javascript (SCRIPT5022) в IE10
Я написал этот код:
AjxException.reportScriptError =
function(ex) {
if (AjxException.reportScriptErrors && AjxException.scriptErrorHandler && !(ex
instanceof AjxException)) {
AjxException.scriptErrorHandler(ex);
}
throw ex;
};
Это нормально во всех браузерах, включая IE9, 8, но я получил эту ошибку в IE10:
SCRIPT5022: InvalidCharacterError
Упоминалось throw ex;
Почему это происходит в IE10 и как я могу это решить?
2 ответа:
В конце концов, я понял, что было не так с кодами.: код javascript был написан для старых версий IE:
IE7, IE8, IE9
и использовал следующую строку:var ninput = document.createElement(AjxEnv.isIE ? ["<INPUT type='",type,"'>"].join("") : "INPUT");
Для того, чтобы создать элемент ввода. он прекрасно работает в старых версиях IE, но не в
IE10
. Поэтому мне пришлось использовать вместо этого вот это:var ninput = document.createElement((AjxEnv.isIE && !AjxEnv.isIE10up)? ["<INPUT type='",type,"'>"].join("") : "INPUT");
Теперь это работает.
Сохраняются ли ваши файлы без BOM (метки порядка байтов)? Они часто могут сбросить парсеров и сеять хаос.
Я бы также рекомендовал разделить ваш код на как можно большее количество строк, чтобы определить, в какой строке есть проблема, а затем удалить ее для тестирования, и таким образом Вы сможете быстро определить, в чем проблема.
Например, вы можете ссылаться на объект неправильного типа (например, при работе с массивом и объектом оказывается строка), так что если вы удаляете объект, и он работает (или работает немного лучше) попробуйте
alert('typeof myObject = '+typeof myObject);
дать вам некоторое дальнейшее понимание.Также похоже, что у вас есть несколько экземпляров
ex
, Убедитесь, что вы не используете строку и функцию с именемex
.