从jQuery中的子窗口向父窗口发出通知

Notification to the parent window from child window in jQuery

本文关键字:窗口 发出通知 jQuery      更新时间:2023-09-26

我在父窗口中释放div时遇到问题。我需要这样做:在从index.html打开的box.html中单击div id=product1后,在父窗口(index.html)中应该释放div id=wProdBox1。如何显示jquery/css来做到这一点?

这是index.html

<div id="box1">Text</div> 
<div id="wBox1">
  <a href="#" class="hideLink">[X]</a>
  <object id="objPage" name="foo" type="text/html" data="box.html"></object>
</div> 
<div id="wProdBox1">
  <a href="#" class="hideLink">[X]</a>
  <object id="objPage2" name="foo" type="text/html" data="box1.html"></object>
</div>
<script type="text/javascript"> 
  $("#box1").click(function () { 
    $("#wBox1").show("slow"); 
    $("body").addClass("scroll"); 
  });
</script>

这是box.html

<div id="product1">Text box</div>
<script type="text/javascript">
  $("#product1").click(function () { 
   $("#wProdBox1").show("slow");  //HERE IS PROBLEM
  }); 
</script>
jQuery允许您在选择器之后传递窗口引用:
$("#wProdBox1", window.opener.document).show("slow");

我喜欢通过将window.opener.document存储在一个变量中来简化这一点:

$( function() {
    var main = window.opener.document;
    $("#product1").click(function () { 
        $("#wProdBox1", main).show("slow");  //HERE IS FIX
    });
})

如果您将box.html作为一个新窗口打开,并想更改index.html中的某些内容,则必须通过opener:引用它

opener.$("#wProdBox1").show("slow");