0

我已经看到了很多类似问题的答案,但还没有找到我的问题的答案。有一个html页面。

<body>
  <div id="text">some text</div>
  <script>
     function hide()
     {
         document.getElementById("text").style.display = "none";
     }
  </script>
</body>

gwt中的代码

HTMLPane panel = new HTMLPane();
panel.setContentsType(ContentsType.PAGE);
panel.setContentsURL("pages/index.html");

public native void someMethod(HTMLPane panel)/*-{
    $doc.hide();
}-*/;

但没有任何效果。试图将函数定义为

document hide = function hideF()
{
    document.getElementById("text").style.display = "none";
}

并在不同的位置定义一个函数,但没有任何帮助。请帮忙找出错误,或者说不可能

4

2 回答 2

0

问题是,当使用ContentsType.PAGE时,HTMLPane 使用 iframe 。
所以,hide()是iframe中子窗口的一个功能。
如果你必须使用ContentsType.PAGE,下面的作品。

HTMLPane panel = new HTMLPane();
panel.setContentsType(ContentsType.PAGE);
panel.setContents("<iframe id='" + "id_internal_panel_1" + "' src='" + "pages/index.html" + "' style='border:none'/>");

// above use of iframe instead of using the one created by HTMLPane, could cause styling and other issues

// following did not work for me
// panel.setContentsURL("pages/index.html");
// panel.getElement().setId("id_internal_panel_1");
// panel.getElement().setPropertyString("name", "id_internal_panel_1");
// panel.getElement().setPropertyString("id", "id_internal_panel_1");

IButton button = new IButton("Hide");
button.addClickHandler(new ClickHandler() {
    public void onClick(ClickEvent clickEvent) {
        someMethod();
    }
});

public native void someMethod()/*-{
    $doc.getElementById("id_internal_panel_1").contentWindow.hide();
    // $wnd.document.getElementById("id_internal_panel_1").contentWindow.hide();

    // can use following with panel.setContentsURL("pages/index.html");, if ContentsType is not set to ContentsType.PAGE
    // $wnd.hide();
}-*/;

将 ID 设置为 HtmlPane 中的 iframe 在 iframe 中
调用 javascript 函数

使用“隐藏/文本”等过于通用的名称可能会导致与其他脚本/对象发生冲突并导致奇怪的行为。

于 2013-04-27T23:52:42.960 回答
0

hide()window是调用本机方法中— 替换$doc为的成员$wnd,即:

public native void someMethod(HTMLPane panel)/*-{
    $wnd.hide();
}-*/;

如果您坚持将其附加到document,请保持本机方法不变,但更正函数分配:

document.hide = function()
{
    document.getElementById("text").style.display = "none";
}
于 2013-02-21T09:12:41.827 回答