我已经看到很多类似问题的答案,但没有找到我的问题的答案。 有一个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";
}
并在不同的位置定义一个函数,但没有任何帮助。 请帮助找到错误,或者说这是不可能的
答案 0 :(得分:0)
hide()
是window
的成员 - 在调用本机方法中将$doc
替换为$wnd
,即:
public native void someMethod(HTMLPane panel)/*-{
$wnd.hide();
}-*/;
如果您坚持将其附加到document
,请保持原始方法不变,但更正功能分配:
document.hide = function()
{
document.getElementById("text").style.display = "none";
}
答案 1 :(得分:0)
问题是,HTMLPane在使用ContentsType.PAGE时使用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();
}-*/;
Set an ID to an iframe in a HtmlPane
Calling javascript function in iframe
使用像“hide / text”这样的通用名称可能会导致与其他脚本/对象的冲突,并导致奇怪的行为。