IE10 中的 Javascript 错误 (SCRIPT5022)



我写了这段代码:

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中会发生这种情况,我该如何解决这个问题?

最终,我弄清楚了代码的问题: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的函数。

最新更新