Javascript 如何在子窗口中从父窗口使用jquery

Javascript 如何在子窗口中从父窗口使用jquery,javascript,jquery,Javascript,Jquery,如果查看引用链接,它有一个iframe,可以访问jquery的父引用。如果不是iframe,而是一个子窗口,那么同样的事情可能发生吗 p.S. 尽管语法错误的原因未知,但如果我继续执行错误,单击处理程序仍然有效 语法错误 当由$(“#Button1”)调用时,返回窗口.opener.$上出现非描述性语法错误。因此,我没有收到警报 父窗口 <html> <body> <input id="Parent_Button1" type="button" value

如果查看引用链接,它有一个iframe,可以访问jquery的父引用。如果不是iframe,而是一个子窗口,那么同样的事情可能发生吗

p.S.
尽管语法错误的原因未知,但如果我继续执行错误,单击处理程序仍然有效

语法错误
当由
$(“#Button1”)调用时,
返回窗口.opener.$
上出现非描述性语法错误。
因此,我没有收到警报

父窗口

<html>
<body>

    <input id="Parent_Button1" type="button" value="Pop out window" />

    <script>
        window.onload = function () {
            $('#Parent_Button1').on('click', function () {
                window.open('pop-out-win.aspx', '', 'width=400,height=300');
            });
        }
    </script>
</body>
</html>

window.onload=函数(){
$('#父按钮1')。在('click',函数(){
window.open('pop-out-win.aspx','','width=400,height=300');
});
}
子窗口


window.onload=函数(){
if(typeof(jQuery)=“未定义”){
var iframeBody=document.getElementsByTagName(“正文”)[0];
var jQuery=函数(选择器){return window.opener.$(选择器,iframeBody);};
var$=jQuery;
变量btn1=$('按钮1');
btn1.on('click',函数(){
警报('成就已解锁!')
});
}
}

参考

我没有解决浏览器兼容性、可读性等问题,但是像这样的问题呢:

<body>
  <script src="https://ajax.googleapis.com/ajax/libs/jquery/1.7.1/jquery.min.js"></script>
  <script>
    function myFunction() {
      var childWindow = window.open("", "childWindow", "width=200,height=100");
      var script = childWindow.document.createElement("script");
      script.innerHTML = 'if (typeof(jQuery) == "undefined") { window.jQuery = function(selector) { return window.opener.jQuery(selector, document);};jQuery = window.opener.$.extend(jQuery,window.opener.$);window.$ = jQuery;var msg = "Created with jQuery!";$("body").append(\'<button onclick="alert(msg)">Text</button>\');}';
      childWindow.document.getElementsByTagName("head")[0].appendChild(script);
    }

  </script>
  <p>Click to test child window jQuery injection.</p>

  <button onclick="myFunction()">Try it</button>
</body>

函数myFunction(){
var childWindow=window.open(“,”childWindow“,”宽度=200,高度=100”);
var script=childWindow.document.createElement(“脚本”);
script.innerHTML='if(typeof(jQuery)==“undefined”){window.jQuery=function(selector){return window.opener.jQuery(selector,document);};jQuery=window.opener.$.extend(jQuery,window.opener.$);window.$=jQuery;var msg=“用jQuery创建!”;$(“body”).append(\'Text\');};
childWindow.document.getElementsByTagName(“头”)[0].appendChild(脚本);
}
单击以测试子窗口jQuery注入

试试看
这是上面脚本标记的可读内容:

if (typeof(jQuery) == "undefined") {
    window.jQuery = function(selector) {
        return window.opener.jQuery(selector, document);
    };
    jQuery = window.opener.$.extend(jQuery, window.opener.$);
    window.$ = jQuery;
    var msg = "Created with jQuery!";
    $("body").append('<button onclick="alert(msg)">Text</button>');
}
if(typeof(jQuery)=“未定义”){
window.jQuery=函数(选择器){
返回window.opener.jQuery(选择器、文档);
};
jQuery=window.opener.$.extend(jQuery,window.opener.$);
window.$=jQuery;
var msg=“使用jQuery创建!”;
$(“正文”).append('Text');
}

工作示例

是的,该程序是可行的。你到底想做什么?哎呀,我没有提到我在
return window.opener.$
上遇到了一个非描述性语法错误,当它被
$(“#Button1”)
调用时。所以,我没有警觉。看,
if (typeof(jQuery) == "undefined") {
    window.jQuery = function(selector) {
        return window.opener.jQuery(selector, document);
    };
    jQuery = window.opener.$.extend(jQuery, window.opener.$);
    window.$ = jQuery;
    var msg = "Created with jQuery!";
    $("body").append('<button onclick="alert(msg)">Text</button>');
}