IE 64位浏览器上的GWT JavaScript错误

时间:2012-10-19 16:03:41

标签: internet-explorer gwt

所以我在这里有点奇怪。

我有一个运行GWT 2.4的(巨大的)遗留应用程序。在我的一个扩展FlowPanel的自定义小部件中,我在构造函数中调用以下内容:

super();
DOM.setElementProperty(getElement(), "style", "");

言自明的。我删除了在初始化FlowPanel时GWT可能或可能没有应用的任何默认内联样式。这些是构造函数中的前两行。构造函数的其余部分应用ID,然后添加一些标签和输入元素。没有什么过于花哨的。

好消息是它适用于IE9,Chrome,Firefox。它在32位版本的IE8中也能正常工作。它在64位版本的IE8中不起作用,在调试模式下,会出现此错误:

com.google.gwt.core.client.JavaScriptException: (Error): Not implemented 
    at com.google.gwt.dev.shell.BrowserChannelServer.invokeJavascript(BrowserChannelServer.java:248)
    at com.google.gwt.dev.shell.ModuleSpaceOOPHM.doInvoke(ModuleSpaceOOPHM.java:136)
    at com.google.gwt.dev.shell.ModuleSpace.invokeNative(ModuleSpace.java:561)
    at com.google.gwt.dev.shell.ModuleSpace.invokeNativeVoid(ModuleSpace.java:289)
    at com.google.gwt.dev.shell.JavaScriptHost.invokeNativeVoid(JavaScriptHost.java:107)
    at com.google.gwt.dom.client.Element$.setPropertyString$(Element.java)
    at com.google.gwt.user.client.DOM.setElementProperty(DOM.java:1127)

...下一行表示我在上面指出的setElementProperty行。

我被告知它在32位IE 6中也能正常工作,尽管64位版本也会因为相同的结果而窒息死亡。

因此。 为什么这个代码在这些浏览器的64位版本中不起作用?

1 个答案:

答案 0 :(得分:3)

你在做什么基本上是在JS:elt.style = ''。您应该使用elt.style.cssText = ''(旧式)或DOM.setStyleAttribute(getElement(), "cssText", "")getElement().getStyle().setProperty("cssText", "")(新式)在GWT中执行getElement().getStyle().clearProperty("cssText")