我有一个用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
答案 0 :(得分:0)
尝试创建一个简单的html文档,没有任何JS库而不是GWT应用程序,并执行类似:
的操作 document.getElementById("MyElement").className = "MyClass";
如果问题仍然存在,请打开Chrome问题。
您也可以使用开发者控制台在GWT应用程序中尝试相同的操作,看看是否会发生这种情况。
如果您可以演示一个任何人都可以重复的程序,只有在GWT中才能使它在GWT站点中打开一个问题。