GWT - 创建ListBox在IE9中抛出INVALID_CHARACTER_ERR异常

时间:2011-04-20 08:10:26

标签: internet-explorer gwt listbox

我正在使用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);
}

如何解决此问题?

谢谢和问候,

海德尔

5 个答案:

答案 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所期望的那样,应用程序加载,并且所有这一切都再次适合全世界。

在相当复杂的应用程序中解决了我的问题。