1.  demo1.html页面中有个iframe元素,iframe元素的src是iframe1.html,怎么在demo1.html页面中操作iframe1.html页面

答曰:demo1.html中,js先找到iframe元素(比如命名为:oIframe),那么oIframe.contentWindow就是iframe1.html这个页面的window,剩下了就是DOM操作的事情了。

举例:要求:demo1.html页面中有个按钮,点击按钮,iframe1页面某些文字改变颜色

<!DOCTYPE html>
<html><head><meta charset="UTF-8"><title>我是demo1.html</title></head><body><input type="button" name="btn1" id="btn1" value="点击按钮控制iframe页面" /><br /><iframe id="iframe1" src="iframe1.html" width="300" height="200"></iframe><script>window.onload = function(){var oBtn1  = document.getElementById('btn1');//获取iframe元素,oIframe.contentWindow就是iframe1.html页面的window对象var oIframe = document.getElementById('iframe1');oBtn1.onclick = function() {//demo1.html页面中的js控制了iframe1.html页面的字体颜色oIframe.contentWindow.document.body.style.color = 'red';}}</script></body>
</html>

  

<!DOCTYPE html>
<html><head><meta charset="UTF-8"><title>我是iframe1.html</title></head><body>父级页面要改变我的颜色</body>
</html>

  效果如下:

注意:

  1. 谷歌浏览器对iframe要在服务器环境下执行。
  2. oIframe.contentWindow.document可以简写为oIframe.contentDocument,但是前者所有浏览器都支持,后者IE6、IE7不支持

2.  demo2.html页面中有个iframe,地址是iframe2.html,怎么在iframe2.html页面中操作demo2.html页面中的元素

答曰:iframe2.html页面的js中,window.parent就是demo2.html这个页面的window,剩下的也就是具体怎么DOM操作的事情了

举例:iframe2.html页面中的按钮,点击一次,demo2.html页面中某些文字变颜色

<!DOCTYPE html>
<html><head><meta charset="UTF-8"><title>我是demo2.html</title></head><body><div>有本事你改我的颜色啊!</div><iframe id="iframe2" src="iframe2.html" width="300" height="200"></iframe></body>
</html>

  

<!DOCTYPE html>
<html><head><meta charset="UTF-8"><title>我是iframe2.html</title></head><body><input type="button" name="btn2" id="btn2" value="点击按钮控制demo2.html页面" /><script>window.onload = function(){var oBtn2  = document.getElementById('btn2');oBtn2.onclick = function() {//demo1.html页面中的js控制了iframe1.html页面的字体颜色var oDiv = window.parent.document.body.children[0]; oDiv.style.color = 'red';}}</script></body>
</html>

  效果如下:

注意:这里iframe2.html页面中,window.parent就是他的父级的window,如果是demo2.html中iframe的src是demo3.html,demo3.html里iframe是iframe2.html呢?就是多层嵌套,怎么找到最顶层的页面window对象呢?答曰:window.top即可!

3.  上面的案例中,都是demo页面中固定好了的iframe,如果要动态加载iframe,该怎么用呢?

答:和其他元素标签的DOM操作一样,document.createElement即可。

举例:要求demo3.html中,点击按钮,动态生成并加载iframe2.html(iframe2.html代码就不用贴了,在上面案例中有)

<!DOCTYPE html>
<html><head><meta charset="UTF-8"><title>我是demo3.html</title></head><body><h1>动态加载iframe</h1><input type="button" name="btn3" id="btn3" value="点击创建iframe" /><script>window.onload = function(){var oBtn3     = document.getElementById('btn3');oBtn3.onclick = function() {var oIframe = document.createElement('iframe');oIframe.src = 'iframe2.html?t=798';document.body.appendChild(oIframe);//oIframe就是指在demo3.html这个页面中的iframe标签所代表的DOM元素//oIframe.contentWindow是iframe2.html这个页面的window对象//别人说,IE下只能用oIframe.attachEvent('onload',function(){...}) 我试了下,IE下也可以用下面的oIframe.onload = function(){alert(888);};//如果iframe页面js中有window.onload,oIframe.contentWindow.onload是无效的(IE6-8下还是有效的),如果没有,则可以。当然尽量别用这么乱oIframe.contentWindow.onload = function(){alert(999);}}}</script></body>
</html>

  效果如下:

4.  案例,如何防止自己页面被其他人嵌套在iframe里?

答曰:在自己页面,用window.top != window进行判断,如果确实不等,说明被嵌套,则赋值window.top.location.href值。核心代码如下:

  if(window.top != window){window.top.location.href = window.location.href;}

  

转载于:https://www.cnblogs.com/html55/p/10163631.html

JS操作iframe元素相关推荐

  1. JS/JQuery操作iframe元素

    JS操作iframe元素 父页面操作子页面 //获取iframe元素 var oIframe = document.getElementById('iframe1');oIframe.contentW ...

  2. JS操作iframe里的dom

    出自:http://www.css88.com/archives/2343 看到断桥残雪 对我上一篇日志的回复我也学习了一下JS操作iframe里的dom:主要参考了断桥残雪的<用JavaScr ...

  3. JS操作iframe

    1. 获得iframe的window对象 2. 获得iframe的document对象 3. iframe中获得父页面的window对象 4. 获得iframe在父页面中的html标签 5. ifra ...

  4. 原生js获取document_【JS 口袋书】第 9 章:使用 JS 操作 HTML 元素

    作者:valentinogagliardi 译者:前端小智 来源:github 这几天自己的公众号无套路送现金 200+,参与方式如下 OKR 与 KPI 的区别(文中无套路送现金 200+) 文档对 ...

  5. python中返回上一步操作_selenium操作iframe元素,切入退出操作

    iframe是个特殊的标签,相当于在网页内部重新嵌套一个网页.如果selenium要操作iframe里面的元素,则需要先切入iframe.selenium操作iframe方法如下: 1.seleniu ...

  6. JS操作DOM元素属性和方法

    Dom元素基本操作方法API,先记录下,方便以后使用. W3C DOM和JavaScript很容易混淆不清.DOM是面向HTML和XML文档的API,为文档提供了结构化表示,并定义了如何通过脚本来访问 ...

  7. js 操作 iframe

    //页面内有两个iframe <table width="100%">     <tr width="100%">         &l ...

  8. JavaScript操作iframe之不得不说的秘密(一)

    随着W3C一声令下,几年前使用非常频繁的frameset + frame已完成使命,光荣退伍.作为frameset的替代方案(姑且这么称吧),iframe的使用也多了起来.较frameset方案,if ...

  9. 【面试必备】javascript操作DOM元素

    前言 时间过的真快,不知不觉就到年底了.问问自己,这一年你对自己的工作满意吗? 评价标准是什么呢?当然是马云的那两条准则了:钱给到了吗?干的爽吗?如果答案都是no,那么,你准备好跳槽了吗? 为了应对年 ...

  10. electronjs设置宽度_Js操作DOM元素及获取浏览器高宽的简单方法

    在JavaScript中,经常会来获取Document文档元素,是 HTML 文档对象模型的英文缩写,Document Object Model for HTML,是基于浏览器编程,HTML DOM ...

最新文章

  1. 万万没想到,“红孩儿”竟然做了程序员,还是 CTO!
  2. gamma分布 pytorch_Probability distributions - torch.distributions
  3. zoj 1438 - Asteroids!
  4. java excel api xlsx_Java 解析Excel(xls、xlsx两种格式)
  5. 直播预告丨揭秘神策数据销售方法论,一起向 Top Sales 迈进!
  6. 最新OpenSSL漏洞CCS注入及升级修复
  7. Linux系统断电后起不来,centos/linux 断电后,开机光标闪现不能开启,重新引导
  8. Opencv中IplImage的四字节对齐问题
  9. Java Web 应用概述
  10. 微信公众号提供的服务器地址,微信测试号与公众号能填同一个服务器地址吗?...
  11. 【二手车交易价格预测】赛题理解
  12. 福利彩票选号盘(silverlight5 开源)
  13. 推荐了这些好书,你看过几本啦?
  14. 使用Python打印乘法口诀表
  15. ping命令基本使用详解
  16. win10系统vvv连接不上,提示:“在连接完成前,连接被远程计算机终止”的解决办法
  17. 中兴 Axon 40 Ultra参数评测 中兴 Axon 40 Ultra配置怎么样 中兴 Axon 40 Ultra值得买吗
  18. 校招 | 网易21届互联网校招补录来啦!
  19. 总结运用kali破解WIFI密码的多种方法
  20. Kubernetes引入外部服务与外部数据源

热门文章

  1. git本地分支和远程分支改名
  2. Log4jx 2.9 后支持进程号输出
  3. 使用Profile创建第一个Grails+Angular2应用
  4. 转载——如果让我完善几年前的一个项目,我会做哪些改进?
  5. MANIFEST.MF文件的编辑注意事项
  6. HSRP冗余热备份协议
  7. aggs 聚合 取结果
  8. 让极路由给支持WDS的路由器无线桥接教程
  9. java中将list、map对象写入文件
  10. 面试官:为什么要用 Spring?它到底解决了什么问题?