如何将父值传递给fancybox 2.1.7元素,afterShow?
问题描述:
$.fancybox({
type: 'iframe',
href: url,
afterShow: function() {
var name = parent.$('#pname').val();
$('#fname').val(name);
$('#fname').focus();
return true;
},
beforeClose: function(){
clsCarr();
},
其中pname
是父文档中的输入框,fname是fancybox文档中的输入框。如何将pname
的值存入fname
? afterShow
了解pname
的价值,但不用于fname
。如何将父值传递给fancybox 2.1.7元素,afterShow?
答
我刚才看到这是一个iframe
在fancybox。试图让iframe与他们的父文档“交谈”总是很有趣,所以我不积极,我已经有了这100%的权利。 :)
var name = parent.getElementById("lst-ib").value;
document.querySelector("#fancybox-content iframe").contentDocument.getElementById("fname").value = name;
我这背后的想法是,可能是你$.fancybox
是你的父文档中运行,并且当您使用parent.$('#pname').val()
这将是相当于跑步$('#pname').val()
,因为父母将不能成为任何“更高”比根文件。因此,如果我的理论是正确的,则需要获取iframe
并访问它的contentDocument
(或者也许只是document
),并获取iframe中元素的ID。
这显然只在iframe
与您的父文档使用相同的域时才有效。我相信浏览器现在正在实施某种跨域验证。
父$。('#pname')。val()正在工作。它在父文档中获取pname的值。但我似乎无法在fancybox中打开的文档的fname字段中获得该名称。 fancybox文档是通过ajax调用创建的。 – Linda725
对,我刚刚注意到它是一个iframe?我已经更新了我的答案 - 但我不是100%确定这是正确的。网站是否可以在线分享? – Jonathan
对不起,我只是无法得到这个工作。我得到父母的名字,但无法将其放入fancybox iframe名称中。不知道我做错了什么。 – Linda725