2

我写了这段代码:

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

4

2 回答 2

1

最终,我发现代码出了什么问题:javascript 代码是为旧版本的 IE 编写的:IE7, IE8, IE9并使用了这一行:

var ninput = document.createElement(AjxEnv.isIE ? ["<INPUT type='",type,"'>"].join("") :  
"INPUT"); 

为了创建 INPUT 元素。它在旧版本的 IE 中运行良好,但在IE10. 所以,我不得不改用这个:

var ninput = document.createElement((AjxEnv.isIE && !AjxEnv.isIE10up)? ["<INPUT 
type='",type,"'>"].join("") : "INPUT");

现在,它正在工作。

于 2013-09-29T08:41:58.033 回答
0

您的文件是否在没有 BOM(字节顺序标记)的情况下保存?这些通常会甩掉解析器并造成严重破坏。

我还建议将您的代码切割成尽可能多的行,以确定哪一行存在问题,然后将其删除以进行测试,这样您就可以快速确定问题所在。

例如,您可能引用了错误类型的对象(例如,使用数组并且对象恰好是字符串),因此如果您删除一个对象并且它可以工作(或工作得更好),请尝试alert('typeof myObject = '+typeof myObject);为您提供更多信息洞察力。

而且看起来你有多个实例ex,确保你没有使用一个字符串一个函数都命名为ex.

于 2013-09-22T11:23:56.913 回答