我正在使用GWT
开发一个Web应用程序。该应用程序在FF和chrome中都运行良好。当我在IE9中运行它时,我收到"Error: DOM Exception: INVALID_CHARACTER_ERR (5)".
当我查看导致异常的代码时,创建ListBox
如下
comboBox = new ListBox(false);
并且在编译的Javascript中是:
this["@com.google.gwt.dom.client.DOMImplTrident::createSelectElement(Lcom/google/gwt/dom/client/Document;Z)"] = function(doc, multiple) {
var html = multiple?'<SELECT MULTIPLE>':'<SELECT>';
return doc.createElement(html);
}
如何解决此问题?
谢谢和问候,
海德尔
答案 0 :(得分:2)
Invalid Character DOM Exception in IE9概述了根本原因 - 基本上IE 9现在遵循W3C DOM Level 1标准实施document.createElement
。
以前你可以创建一个这样的元素:
document.createElement('<div>');
这不符合标准,现在你只能将元素名称作为参数传递,例如:
document.createElement('div');
无效字符大概是因为<
(和>
)在元素名称中是无效字符。
答案 1 :(得分:2)
升级到gwt 2.3.0,此错误已在http://code.google.com/p/google-web-toolkit/issues/detail?id=5125修复。
答案 2 :(得分:1)
我通过将以下行添加到xml文件
来修复它<set-property name="user.agent" value="safari" />
答案 3 :(得分:0)
只要指定了无效或非法字符(例如名称),就会抛出DOMException.INVALID_CHARACTER_ERR。
XML中的名称可以包含英文字母(任何情况),数字(0-9),下划线(_),句点(。)和连字符( - )。名称不能以数字,句号或连字符开头。名称也可以包含冒号,但应避免在名称空间之外使用冒号。
查看您是否违反了此页面上呈现的HTML规则。将HTML页面与错误的行号进行比较并进行修复。
答案 4 :(得分:0)
我遇到了一个旧的GWT应用程序。我没有触及GWT (谁想要这样做),而是发现修补浏览器方法以支持GWT的document.createElement用法不正确。
这里应该是可以丢弃的要点:https://gist.github.com/cmawhorter/b688401e00220c4a1af2
现在public static void main(String[] args) throws Exception
{
Scanner scan = new Scanner(new FileReader(args[0]));
int integerFromCM = Integer.parseInt(args[1]);
}
正如gwt所期望的那样,应用程序加载,并且所有这一切都再次适合全世界。
在相当复杂的应用程序中解决了我的问题。