所以我在这里有点奇怪。
我有一个运行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位版本中不起作用?
答案 0 :(得分:3)
你在做什么基本上是在JS:elt.style = ''
。您应该使用elt.style.cssText = ''
(旧式)或DOM.setStyleAttribute(getElement(), "cssText", "")
或getElement().getStyle().setProperty("cssText", "")
(新式)在GWT中执行getElement().getStyle().clearProperty("cssText")
。