我有一个HTML,比如A.html。我在IFRAME中调用A.html里面的A.html。
A.html
<html>
.....
<IFRAME>
A.html (same domain, etc as A.html)
</IFRAME>
</html>
这是一款GWT应用。这个IFRAME是一个弹出窗口,当用户关闭(点击关闭按钮)这个弹出窗口(也可以加载A.html,如上所示),我想要 触发事件以在外部A.html上显示一些消息,这意味着我需要访问IFRAME之外的代码。我怎样才能做到这一点?
由于
答案 0 :(得分:1)
由于您的iframe内容是从同一个域加载的,因此您可以在包含页面上调用javascript函数。我假设您要求从GWT调用iframe之外的代码。如果是这样,那么你可以使用JSNI。
例如,给定JSNI方法:
private final native void postClosedEvent()
/*-{
$wnd.functionDefinedOutside();
}-*/
您可以在GWT ClickHandler中调用该方法:
closeButton.addClickHandler(new ClickHandler()
{
public void onClick(ClickEvent e)
{
postClosedEvent()
}
});
这假定在包含页面中使用javascript定义的函数,例如:
<script type="text/javascript">
var functionDefinedOutside =
function()
{
alert("GOT MESSAGE FROM iframe");
};
</script>
注意:如果从不同的域加载iframe内容,则可以使用postMessage获得相同的结果。
答案 1 :(得分:0)
GWT模块中的IFRAME定义为:
<iframe src="/temp.jsp"></iframe>
GWT模块(外类):
public class Test implements EntryPoint {
public void onModuleLoad() {
registerMethod();
}
private static native void registerMethod() /*-{
$wnd.mt = $entry(@test.client.Test::show(Ljava/lang/String;));
}-*/;
public static void show(String value){
Window.alert("Calling from inside IFRAME " + value);
}
}
IFRAME中的JSP:temp.jsp
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<title>temp</title>
<meta http-equiv="Content-Type" content="text/html;charset=utf-8" />
<style type="text/css">
</style>
</head>
<body>
<div id="content">
Holla commo estas from the iframe!
</div>
<script type="text/javascript">
window.alert("inside iframe");
window.parent.mt("passing a value to a parent!!!");
</script>
</body>
</html>