Ошибка 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 2

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.