Chrome: className属性改变不与GWT一起工作

Chrome: className attribute changing not working with GWT

本文关键字:GWT 一起 工作 改变 className 属性 Chrome      更新时间:2023-09-26

我有一个用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中没有任何特定的设置或插件,一切都是默认的。

这似乎是一个bug在Chrome浏览器,但我没有找到具体的前提条件如何再现它。我谷歌了一下,但没有找到同样的问题和解决方案。

谁能给我一些解决这个问题的方法吗?

乌利希期刊指南。这是一个问题与AdBlock Chrome扩展。我禁用了它,问题就消失了。更多详细信息:https://code.google.com/p/chromium/issues/detail?id=377913

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

 document.getElementById("MyElement").className = "MyClass";

如果问题仍然存在,打开一个问题到chrome。

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

如果你能证明一个程序可以被任何人重复,使它只在GWT中发生,在GWT网站上打开一个问题