当前位置: 澳门新濠3559 > 服务器运维 > 正文

一块黑布下去,这样我们就可以使用子窗口中的

时间:2019-11-29 04:05来源:服务器运维
生活永远是一个大染缸,一块白布下去,黑布出来,一块黑布下去,一块七色布出来。 生活永远是一个大染缸,一块白布下去,黑布出来,一块黑布下去,一块七色布出来。 contentWin

生活永远是一个大染缸,一块白布下去,黑布出来,一块黑布下去,一块七色布出来。

生活永远是一个大染缸,一块白布下去,黑布出来,一块黑布下去,一块七色布出来。
contentWindow 兼容各个浏览器,可取得子窗口的 window 对象。
contentDocument Firefox 支持,> ie8 的ie支持。可取得子窗口的 document 对象。
在子级iframe设置 父级 iframe ,或 孙级 iframe 高度。

在IE6、IE7中,我们可以使用 document.frames[ID].document 来访问iframe子窗口中的document对象,可是这是不符合W3C标准的写法,也是IE下独有的方法,在Firefox下却不可以使用,Firefox下使用的是符合W3C标准的 document.getElementById(ID).contentDocument 方法,今天我在写实例的时候,通过IE8进行测试,IE8也是使用的符合W3C标准的 document.getElementById(ID).contentDocument 方法。所以我们可以写一个在IE和Firefox下通用的获取iframe document对象的函数—getIFrameDOM:

对于 javascript 操作 iframe 父级页面元素的方法,大家应该都非常清楚了,下面结合当前非常流行的 jquery 分享一下如何使用 jquery 查找和操作 iframe 父级页面元素的实现代码。实例如下:

contentWindow 兼容各个浏览器,可取得子窗口的 window 对象。contentDocument Firefox 支持,> ie8 的ie支持。可取得子窗口的 document 对象。

复制代码 代码如下:

function getIFrameDOM(id){
 return document.getElementById(id).contentDocument || document.frames[id].document;
}
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>父级页面</title>
</head>
<body>
<div id="example">这是父级页面!</div>
<div>
<iframe src="iframe.html"></iframe>
</div>
</body>
</html>

在子级iframe设置 父级 iframe ,或 孙级 iframe 高度。

function showIframeH(){
    var parentWin = parent.document.getElementById("test");
    if(!parentWin) return false;
    var sub = parentWin.contentWindow.document.getElementById("test2");
    if(!sub) return false;
    var thirdHeight = sub.contentWindow.document.body.offsetHeight; //第三层 body 对象
    sub.height = thirdHeight; //设置第二层 iframe 的高度
    var secondHeight = x.contentWindow.document.body.offsetHeight; //第二层 body 对象
    x.height = secondHeight; //设置第一层 iframe 的高度
    //alert(secondHeight);
    //alert('body: ' + x.contentDocument.body.offsetHeight + ' div:' + thirdHeight);
}

如果我们要获取iframe的window对象,而不是document对象,可以使用document.getElementById(ID).contentWindow的方法。这样我们就可以使用子窗口中的window对象了,比如子窗口中的函数。

下面是 iframe.html 页面代码:

function showIframeH(){ var parentWin = parent.document.getElementById; if return false; var sub = parentWin.contentWindow.document.getElementById return false; var thirdHeight = sub.contentWindow.document.body.offsetHeight; //第三层 body 对象 sub.height = thirdHeight; //设置第二层 iframe 的高度 var secondHeight = x.contentWindow.document.body.offsetHeight; //第二层 body 对象 x.height = secondHeight; //设置第一层 iframe 的高度 //alert; //alert('body: ' + x.contentDocument.body.offsetHeight + ' div:' + thirdHeight);}

contentWindow 兼容各个浏览器,可取得子窗口的 windo...

在子窗口中,我们可以通过parent就可以获得父窗口的window对象,如果假如我们在父窗口有一个函数为getIFrameDOM,我们可以通过parent.getIFrameDOM来调用,同理我们使用parent.document就可以在子窗口中访问父窗口的document对象了。

<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>iframe 子级页面</title>
<script language="javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.4.2/jquery.min.js"></script>
<script language="javascript">
$("body",parent.document).append('这是子级页面添加的内容!');
$("body",parent.document).find('#example').html('子级页面将替换父级页面的内容!');
</script>
</head>
<body>
iframe 子级页面内容
</body>
</html>

下面附一个实例,因为2345的推广,很多导航站都将网址直接换成2345的推广页面了,那就是当前域名下获取2345中的宽度,然后通过js设置iframe内容的高度,这样看起来是一个整体,核心内容如下

父级窗口操作iframe里的dom

JS操作iframe里的dom可是使用contentWindow属性,contentWindow属性是指指定的frame或者iframe所在的window对象,在IE中iframe或者frame的contentWindow属性可以省略,但在Firefox中如果要对iframe对象进行编辑则,必须指定contentWindow属性,contentWindow属性支持所有主流浏览器。

相关的还有一个contentDocument属性,这个属性是指指定的frame或者iframe所在的document对象,但是悲剧的是,ie6-ie7并不支持这个属性。

ie6和ie7还可以使用document.frames["iframe Name"]或者document.frames["iframe ID"]来获取相当于contentWindow属性,而firefox和chrome并不支持这些document.frames["iframe Name"]或者document.frames["iframe ID"],但是window.frames["iframe Name"]或window.frames[index](index是索引值)也支持所有主流浏览器。

我们知道document对象是window对象的一个子对象,所以我们可以通过document.getElementById("iframe ID").contentWindow.document来获取iframe的document对象,相当于contentDocument属性。

另外由于 iframe 不能跨域,所以直接打开以上文件的话,有的浏览器可能不起作用,这时可以将以上两文件上传到本地或远程服务器上看效果。

function mainFrameLoaded {//debugger;//alert(t.contentWindow.document.body.offsetHeight); t.style.height = t.contentWindow.document.body.offsetHeight + 'px';}

澳门新濠3559,iframe里的js操作父级窗口的dom

iframe里的js要操作父级窗口的dom,必须搞懂几个对象:

  • parent是父窗口(如果窗口是顶级窗口,那么parent==self==top)。
  • top是最顶级父窗口(有的窗口中套了好几层frameset或者iframe)。
  • self是当前窗口(等价window)。
  • opener是用open方法打开当前窗口的那个窗口。

这样iframe里的js要操作父级窗口的dom可以通过parent,top这些对象来获取父窗口的window对象,例如:

parent.document.getElementById("dom ID");

parent,top还能调用父级窗口的的js方法,比如,getIFrameDOM(iID)是父级窗口的一个方法,那么iframe里可以使用parent.getIFrameDOM(“wIframeA”)来调用父级窗口的getIFrameDOM(iID)方法;

虽然iframe在现在WEB开发中越来越少用到了,但是iframe还有很多值得使用的地方,比如使用iframe解决跨域问题.关于iframe还有很多东西要学习,比如iframe自适应高度,使用iframe解决跨域问题,iframe加载问题,iframe加载性能问题等等,还有很多东西要学习。

最后附上一个在指定iframe打开指定页面的HTML:

<div class="refresh" style="margin-right:4em;">
 <label><input type="radio" name="channel" onclick="window.frames['usermessage-content-frame'].location.href='admin05_0.php';" />待审</label>
 <label><input type="radio" name="channel" onclick="window.frames['usermessage-content-frame'].location.href='admin05_1.php';" />已审</label>
 <label><input type="radio" name="channel" onclick="window.frames['usermessage-content-frame'].location.href='admin05_2.php';" />已删</label>
 <label><input type="radio" name="channel" onclick="window.frames['usermessage-content-frame'].location.href='admin05.php';" checked="checked" />全部</label>
</div>
<div class="refresh"><a href="javascript:void(0);" onclick="javascript:refreshContent('usermessage-content-frame');">刷新</a></div>

<div id="usermessage-content-div" class="marginTop5 contentIFrame">
 <iframe id="usermessage-content-frame" name="usermessage-content-frame" frameborder="0" src="page05.php"></iframe>
</div>

document.frames[ID].document 来访问iframe子窗口中的document对象,可是这是不符合W3C标准的写法,也是IE下独有的方法,...

另外对于javascript操作iframe对象有几点需要说明的是:

记住js写在前面,iframe在后面,通过onload加载的时候就触发,完美融合。

iframe里的js要操作父级窗口的dom,必须搞懂几个对象:

parent是父窗口(如果窗口是顶级窗口,那么parent==self==top),

top是最顶级父窗口(有的窗口中套了好几层frameset或者iframe),

self是当前窗口(等价window),

opener是用open方法打开当前窗口的那个窗口;

这样iframe里的js要操作父级窗口的dom可以通过parent,top这些对象来获取父窗口的window对象,例如:

parent.document.getElementById("dom ID");

parent,top还能调用父级窗口的的js方法,比如,getIFrameDOM(iID)是父级窗口的一个方法,那么iframe里可以使用parent.getIFrameDOM("wIframeA")来调用父级窗口的getIFrameDOM(iID)方法。

您可能感兴趣的文章

  • iframe 子页面如何操作父页面元素
  • Js地址栏特效(显示页面内所有加链接的图片的大小和查看当前的浏览器的高度)
  • 如何控制页面内容的加载顺序
  • js操作cookie,js读取cookie,js设置cookie,js删除cookie总结
  • JavaScript操作cookie的相关函数
  • javascript实现刷新iframe的方法的总结
  • jquery判断页面是否已经加载了jquery文件
  • js 实现页面打印功能

javascript 操作 iframe 父级页面元素的方法,大家应该都非常清楚了,下面结合当前非常流行的 jquery 分享一下如何使用 jquery 查找和操作...

编辑:服务器运维 本文来源:一块黑布下去,这样我们就可以使用子窗口中的

关键词: