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