JQuery - 写入到父窗口

8

我有一个通过JavaScript打开另一页的HTML页面。当用户在另一页中点击按钮时,我想通过JQuery在打开页面的DIV中发布一条消息。我不能确定问题出在哪里,但似乎无法让它工作。这是我的打开者页面。

<html>
  <head>
    <script type="text/javascript" src="jquery-1.3.2.min.js"></script>
  </head>

  <body>
    <input type="button" onclick="window.open('dialog.html', '_blank', 'height=200, width=300');" value="launch!" />
    <div id="testDiv"></div>
  </body>
</html>

当用户点击“启动!”按钮时,会出现一个对话框。对话框的代码如下:
<html>
  <head>
    <script type="text/javascript" src="jquery-1.3.2.min.js"></script>
  </head>

  <body>
    <input type="button" onclick="updateOpener()" value="Update Opener" />
    <script type="text/javascript">
      function updateOpener()
      {
        var testDiv = window.opener.jQuery("#testDiv");
        if (testDiv != null) {
      alert("here");
      testDiv.html("Updated!");
        }
      }
    </script>
  </body>
</html>

出人意料的是,警示框弹出了。然而,我似乎无法更新打开页面中 DIV 的 HTML。有人知道如何做吗?


他只是通过编辑修复了它。 - montrealist
4个回答

5
您正在引用“confirmDiv”。那个DIV在哪里呢?

3
这是原帖作者的问题。在得到这个回答后,他修改了代码,现在它可以工作了。 - Sev

2

如果父页面(打开者)位于另一个域上,则无法执行此操作。否则,您的代码完美运行。

此外,您的“!= null”检查可能没有达到您预期的效果,因为jQuery函数从不返回null。如果要检查元素是否存在,您需要这样做...

var el = $("#myElementId");
if(el.length == 0)
  alert('Not found!');

0

嗯,它在Firefox 3.0.11、IE8和Chrome 2中对我有效...(即dialog.html按钮更新打开者页面的HTML,以显示“已更新!”)


0

奇怪的是,在我的Chrome、IE 8和FireFox中,你的示例都能正常工作。你有其他的细节吗?


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接