iframe子页面与父页面间元素及js变量的访问

1、子页面访问父页面元素 

window.parent.document.getElementById("openId").value; 

jQuery方法为: 

$(window.parent.document).contents().find("#openId").val();
与document相关的方法都可以这样用 

2、父页面访问子页面元素 

document.getElementById("iframeId").contentDocument.getElementsByTagName("table");
 contentDocument后可以使用document相关方法 

jQuery方法为: 

$("#iframeId").contents().find("#openId").val(); 

   $(window).load(function (){
        alert($("#iframepage").contents().find("#openId").val());
        $("#iframepage").contents().find("#openId").val(1111);
        $("#modifybtn").click(function(){
            alert($("#iframepage").contents().find("#openId").val());
        });
    });
    $(document).ready(function(){
        $("#modifybtn").click(function(){
            alert($("#iframepage").contents().find("#openId").val());
        });
    });
  window.onload必须等到页面内包括图片的所有元素加载完毕后才能执行。 
 $(document).ready()是DOM结构绘制完毕后就执行,不必等到加载完毕。 

在ready下直接改子页面中元素无效,或是alert元素的值显示undefined,原因应该是子页面还没加载完毕,父页面就去访问子页面元素造成的,这时用window.onload可避免

3、子页面访问父页面js变量(注:父页面的js变量需为全局变量) 

父页面:

var variableParent=......;

子页面:

var variable = parent.variableParent;
  (variableParent为父页面定义的变量) 

4、父页面访问子页面js变量 

两种方法:

第一种:用定时器去尝试获取子页面中的变量

var dIframe = document.getElementById('iframepage'),
 oWin = dIframe.contentWindow;
 var i = 0,
 _timer = setInterval(function() {   //用定时器去尝试获取子页面中的变量
 if (i >= 100 && _timer) {
 clearInterval(_timer);
 }
 if (oWin && typeof(oWin.deviceID) != 'undefined') {
 alert('来自子页面sun.html的变量a:' + oWin.deviceID);
 if (_timer) {
 clearInterval(_timer);
 }
 }
 i ++;
 }, 30);

第二种:通过在父页面编写回调函数,再在子页面调用,达到传值的目的

父页面:
function deviceIdCallback(deviceId) {
    alert(deviceId);
}

子页面:
deviceID=data.deviceId;
$(window.parent.deviceIdCallback(deviceID));


(参考:http://abc08010051.iteye.com/blog/1843120)

  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值