如何将值从父级传递到fancybox 2.1.7元素,afterShow?

时间:2017-07-26 03:05:04

标签: parameter-passing fancybox-2

$.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的值放入fnameafterShow知道pname的价值,但未将其放入fname

1 个答案:

答案 0 :(得分:0)

我刚看到这是fancybox中的iframe。尝试将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),并获取其中的元素的ID iframe中。

这显然只有在iframe使用与您的父文档相同的域时才有效。我相信浏览器现在实现了某种跨域验证。