Javascript Chrome:className属性更改不使用GWT
我有一个用GWT写的网站。我需要通过单击此元素来更改某些元素的样式。我使用的代码如下:Javascript Chrome:className属性更改不使用GWT,javascript,css,google-chrome,dom,gwt,Javascript,Css,Google Chrome,Dom,Gwt,我有一个用GWT写的网站。我需要通过单击此元素来更改某些元素的样式。我使用的代码如下: image.addClickHandler(new ClickHandler() { @Override public void onClick(ClickEvent event) { ............... Element element = ((Image) event.getSource()).getElement(); el
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\u name\AppData\local\Google\Chrome\)移动文件夹,此问题将消失,样式更改将开始正常工作。但是,如果我返回以前的chrome设置文件夹,这段代码将不再工作。我没有任何特定的设置或插件在铬,一切都是默认的
这似乎是Chrome浏览器中的一个bug,但我没有找到具体的前提条件来重现它。我在谷歌上搜索,但没有找到同样的问题和解决方案
有人能给我一些解决这个问题的建议吗
UPD。这是AdBlock Chrome扩展的一个问题。我禁用了它,问题消失了。更多详细信息:尝试创建一个没有任何JS库的简单html文档,而不是GWT应用程序,并执行以下操作:
document.getElementById("MyElement").className = "MyClass";
如果问题仍然存在,请向chrome打开问题
您还可以使用开发者控制台在GWT应用程序中尝试同样的方法,并查看是否发生了这种情况
如果您可以演示一个任何人都可以重复的程序,使其仅在GWT中实现,请在GWT网站上打开一个问题。因为它看起来确实像一个Chrome bug,我建议在