Chrome:className属性更改不适用于GWT

时间:2014-06-19 09:19:54

标签: javascript css google-chrome dom gwt

我有一个用GWT编写的网站。我需要通过单击此元素来更改某个元素的样式。我使用这样的代码:

image.addClickHandler(new ClickHandler() {

        @Override
        public void onClick(ClickEvent event) {
  ...............
        Element element = ((Image) event.getSource()).getElement();
        element.setClassName("new_css_class_to_be_applied");
       }

' setClassName' GWT函数使用className JavaScript属性来操作类:

   public final native void setClassName(String className) /*-{
       this.className = className;
    }-*/;

此代码更改了元素的类名(我可以在DOM检查器中看到新的类名),但该类中的样式不适用于该元素。

此问题仅出现在Windows上的Chrome浏览器中,IE和Firefox运行良好。

如果我使用Chrome本地设置(C:\ Users \ User_name \ AppData \ Local \ Google \ Chrome \)移动文件夹,则此问题会消失并且样式更改开始正常运行。但是,如果我返回以前的chrome设置文件夹,则此代码无法再次运行。我在Chrome中没有任何特定设置或插件,一切都是默认设置。

这似乎是Chrome浏览器中的一个错误,但我找不到如何重现它的具体前提条件。我用Google搜索,但没有找到相同的问题和解决方案。

有人可以建议我解决这个问题吗?

UPD。这是AdBlock Chrome扩展程序的问题。我禁用了它,问题就消失了。更多细节:https://code.google.com/p/chromium/issues/detail?id=377913

1 个答案:

答案 0 :(得分:0)

尝试创建一个简单的html文档,没有任何JS库而不是GWT应用程序,并执行类似:

的操作
 document.getElementById("MyElement").className = "MyClass";

如果问题仍然存在,请打开Chrome问题。

您也可以使用开发者控制台在GWT应用程序中尝试相同的操作,看看是否会发生这种情况。

如果您可以演示一个任何人都可以重复的程序,只有在GWT中才能使它在GWT站点中打开一个问题。