【问题标题】:Chrome: className attribute changing not working with GWTChrome:className 属性更改不适用于 GWT
【发布时间】:2014-08-09 18:46:08
【问题描述】:

我有一个用 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 浏览器中的一个错误,但我没有找到如何重现它的具体先决条件。我用谷歌搜索但没有发现相同的问题和解决方案。

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

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

【问题讨论】:

  • 因为它看起来确实像 Chrome 错误,我建议在 crbug.com 提交问题

标签: javascript css google-chrome dom gwt


【解决方案1】:

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

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

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

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

如果您可以演示一个任何人都可以重复的过程,以使其仅在 GWT 中发生,请在 GWT 站点中打开一个问题。

【讨论】:

    猜你喜欢
    • 2010-10-25
    • 2016-06-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多