如何从弹出窗口javascript中调用带有变量的父窗口jquery函数?

时间:2009-12-10 05:03:15

标签: javascript jquery

如何使用弹出窗口javascript中的变量调用父窗口jquery函数?我可以看一下简单的例子吗?

3 个答案:

答案 0 :(得分:5)

opener是对开场文档的window对象的引用。即您可以访问打开窗口的全局javascript命名空间。

e.g。

<html>
  <head>
    <script type="text/javascript" src="http://code.jquery.com/jquery-latest.pack.js"></script>
    <script type="text/javascript">
      function foo(url) {
        // if there is a reference to the opening window
        if (null!=opener) {
          // we call the function in the context of the opening window
          opener.foo(url);
        }
        else {
          // otherwise show the data
          $('#d1').html(new Date() + " : " + url);
        }
      }
    </script>
  </head>
  <body>
    <div id="d1">...</div>
    <button onclick="window.open('?');">new window</button>
    <button onclick="foo(document.URL);">propagte url</button>
  </body>
</html>

如果在(任何)弹出窗口中按“传播URL”,则函数调用将冒泡到第一个非弹出窗口(具有opener = null)。

编辑:请记住,浏览器中实施的安全限制(如跨域检查)适用。

edit2:history.go(0)

的示例
<html>
  <head>
    <script type="text/javascript" src="http://code.jquery.com/jquery-latest.pack.js"></script>
    <script type="text/javascript">
      function foo() {
        var context = (null!=opener) ? opener : window;
        context.history.go(0);
      }

      $(document).ready( function() {
        $('#d1').html("document ready at "+ new Date());
      });
    </script>
  </head>
  <body>
    <div id="d1">...</div>
    <button onclick="window.open('?');">new window</button>
    <button onclick="foo(document.URL);">...and action</button>
  </body>
</html>

答案 1 :(得分:2)

通常你定义一个这样的插件函数:

(function($) {  // jquery no conflict

$.fn.myPlugin = function(myvar){
    // do something
}

})(jQuery);

然后使用:

window.opener.$.fn.myPlugin(myvar);

答案 2 :(得分:0)

window.opener.jQuery(myVariable);