我写了这段代码:
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中会发生这种情况?我该如何解决这个问题?
答案 0 :(得分: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");
现在,它正在发挥作用。
答案 1 :(得分:0)
您的文件是否在没有BOM(字节顺序标记)的情况下保存?那些经常会甩掉解析器并造成严重破坏。
我还建议您将代码切换到尽可能多的行,以确定哪个行存在问题,然后将其删除以用于测试目的,这样您就能够快速确定问题所在。< / p>
例如,你可能指的是一个错误类型的对象(使用一个数组,并且该对象恰好是一个字符串),所以如果你移除一个对象并且它可以工作(或者工作得更好),试试{{ 1}}给你一些进一步的见解。
此外,您似乎有多个alert('typeof myObject = '+typeof myObject);
实例,请确保您没有使用字符串和一个名为ex
的函数。