我写了这段代码:
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
的函数。