【问题标题】:how to prevent html code reload on button click event in GWT如何防止在 GWT 中的按钮单击事件上重新加载 html 代码
【发布时间】:2014-09-10 12:03:56
【问题描述】:

我在 GWT 中创建了一个按钮,并在按钮单击事件中尝试在警报框中获取 div 的文本。所以我做了以下

Button btnClick = new Button("Click Me");
getElement().setInnerHTML("<div id='dummy'>This is dummy Text</div>");
btnClick.addClickHandler(new ClickHandler() {
    public void onClick(ClickEvent event) {
        // handle the click event
        Window.alert(getImageStr());
    }
});
RootPanel.get("dummy").add(btnClick);

这是方法声明:

private native String getDummyText() /*-{
        return document.getElementById("dummy").innerText;
}-*/;

但是当我尝试运行它时。它抛出一个异常

TypeError: Cannot read property 'innerText' of null

当我在javascript的断点处看到inspect元素时,我很震惊地看到body标签中有许多脚本并且当时没有HTML,当我释放那个断点时,它再次创建了HTML。请任何人帮助我。我深陷其中。谢谢你

【问题讨论】:

    标签: javascript jquery html gwt jsni


    【解决方案1】:

    您需要将 JSNI 代码中的 document 替换为 $doc

    当从 JSNI 访问浏览器的窗口和文档对象时, 您必须分别将它们引用为 $wnd 和 $doc。你编译的 脚本在嵌套框架中运行,$wnd 和 $doc 会自动运行 初始化为正确引用宿主页面的窗口和文档。

    【讨论】:

    • 这正是我做错的。非常感谢。你解决了我被困一整天的问题。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-03-01
    • 2012-03-21
    • 1970-01-01
    • 2014-05-04
    • 2012-12-09
    • 2022-01-26
    相关资源
    最近更新 更多