window.parent无法在jsni中工作

时间:2014-04-10 11:06:37

标签: gwt iframe gxt jsni

我正在使用GXT的sencha

我们有一个名为“dashboard”的Web应用程序   url = localhost:8080 / dashboard /

我们有另一个名为issuetracker的web应用程序

url = localhost:2990 / issuetracker /

现在我在issuetracker Web应用程序中有一个速度模板,我在其中给出了以下代码

<iframe src="localhost:8080/dashboard" width="500" height="600">
</iframe>

当我单击仪表板Web应用程序中的按钮时,issuetracker应用程序的URL应该更改为“localhost:8080 / issuetracker / issues?mqlVersion = 25”。 这25个值来自仪表板Web应用程序。

当我尝试编写jsni代码时,没有出现以下任何值 最顶层窗口的网址是“localhost:2990 / issuetracker /”

  • $ wnd.top.location
  • $ wnd.top.location.href
  • $ wnd.parent.location.href
  • $ wnd.parent.location
  • window.top.location
  • window.top.location.href
  • window.parent.location.href
  • window.parent.location

我哪里错了? 任何建议。

1 个答案:

答案 0 :(得分:1)

  

在JSNI中使用$wnd而不是window

尝试(清理浏览器缓存)

JSNI

Window.Location.replace(url);

public static final native String getParentWindow() /*-{
    return $wnd.parent.location.href;
}-*/;

JSP / HTML

<script type="text/javascript">
  function changeURL() {
    try {
        window.parent.location.href = 'http://localhost:8080/issuetracker/issues?mqlVersion=25';
    } catch (e) {
        window.location.href = 'http://localhost:8080/issuetracker/issues?mqlVersion=25';
    }
  }
</script>

示例代码

JSP / HTML

<div>
    <div id='myDiv'>hello</div>
    <iframe src="localhost:8080/dashboard" width="500" height="600">
    </iframe>
</div>

仪表板入口点类:

public static final native Element getParentElementById(String id) /*-{
    return $wnd.parent.document.getElementById(id);
}-*/;

....

public void onModuleLoad() {
     getParentElementById("myDiv").setInnerHTML("hi");
} 

输出:

hello的内部HTML myDiv已替换为hi