1

您好,感谢您阅读我的帖子。

这是我基本上想做的事情:

  • 在第一个 HTML 页面(“parent.html”)中,有一个按钮;

  • 当用户单击按钮时,会弹出一个新窗口(“child.html”)

  • 并且子窗口中“div”元素的内容被更新。

最后的动作在“Firefox”和“Chrome”下都不成功。

父.html

<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
  <head>
    <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
    <title>Parent window document</title>
  </head>
  <body>
    <input 
     type="button" 
     value="Open child window document" 
     onclick="openChildWindow()" />

    <script type="text/javascript">
    function openChildWindow()
    {
      var s_url     = "http://localhost:8080/projectroot/child.html";
      var s_name    = "ChildWindowDocument";
      var s_specs   = "resizable=yes,scrollbars=yes,toolbar=0,status=0";
      var childWnd  = window.open(s_url, s_name, s_specs);
      var div       = childWnd.document.getElementById("child_wnd_doc_div_id");
      div.innerHTML = "Hello from parent wnd";
    }
    </script>
  </body>
</html>

child.html

<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
  <head>
    <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
    <title>Parent window document</title>
  </head>
  <body>
    <div id="child_wnd_doc_div_id">child window</div>
  </body>
</html>
  • IE9 => 它有效。

  • Firefox 13.0.1 => 它不起作用。错误消息:“div 为空”。

  • Chrome 20.0.1132.47 m => 不起作用。

你理解这种行为吗?

你能帮我让它在这三种情况下工作吗?

感谢你并致以真诚的问候。

4

1 回答 1

1

我认为在您尝试从中访问元素时未加载窗口/文档。你可以做类似的事情

childWnd.onload = function() {
    var div       = childWnd.document.getElementById("child_wnd_doc_div_id");
    div.innerHTML = "Hello from parent wnd";
}

您也可以查看mdn doc


解决问题的更好方法可能是对“孩子”进行更改。您可以使用 访问父窗口window.opener。但是您应该记住,父窗口可能会关闭,因此您应该考虑某种类型的本地存储(例如 cookie)。

于 2012-07-09T15:09:04.373 回答