1

所以我在这里有点奇怪。

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

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

不言自明。我删除了 GWT 在初始化 FlowPanel 时可能应用或未应用的任何默认内联样式。这些是构造函数中的前两行。构造函数的其余部分应用一个 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 位版本中运行?

4

1 回答 1

3

您所做的基本上是在 JS:elt.style = ''中。您应该这样做elt.style.cssText = '',您可以在 GWT 中使用DOM.setStyleAttribute(getElement(), "cssText", "")(old style) 或getElement().getStyle().setProperty("cssText", "")or getElement().getStyle().clearProperty("cssText")(new style) 执行此操作。

于 2012-10-19T16:10:29.083 回答