老莫的笔记本  
  
查看: 1079|回复: 1

iframe.contentWindow 介绍

[复制链接]

664

主题

881

帖子

5169

积分

超级版主

Rank: 8Rank: 8

积分
5169
发表于 2018-7-4 00:17:10 | 显示全部楼层 |阅读模式
在这里我要白话一下这个东西: 如何在 父级别页面 操控 内嵌iframe 的页面 ?
原理:
第一步:在父页面获取 iframe 的 dome 结构【其实 这个该交页面元素可能更为合适】 。
第二步:在父页面选中iframe  的 元素 进行操作。
【浏览器兼容是关键 考试要考!要考!要考!

其中。尤为重要的就是 iframe.contentWindow
参考链接:https://blog.csdn.net/skydar/article/details/51207110
总结:就是获取对象的,
例如 在火狐谷歌中:下面这句话 表示 拿到iframe中所有的元素
  1. ofrm1 = document.getElementById("frame1").contentWindow.document;
复制代码
IE嘛  非此类   现在补全一个 两个页面的代码 供参考
父页面
  1. <!DOCTYPE html>
  2. <html lang="zh-CN">
  3. <head>
  4.     <meta charset="utf-8">
  5.     <title>这个页面的主要功能 就是控制 iframe 的按钮 点击提交</title>
  6. </head>
  7. <body>
  8.     <h3>这个页面的主要功能 就是控制 iframe 的按钮 点击提交</h3>
  9. <hr />
  10. <iframe name="frame1" id="frame1" src="bt2.html" frameborder="1" height="300" width="600"></iframe>
  11. <hr />
  12. <h2>通过点击改变iframe 页面中的input值</h2>
  13. <p>
  14.     <input id="setInput" type="text" name="skm" value="" />
  15.     <button type="button" onclick="setValue()">点击 更新iframe中 input的值</button>
  16.     <button onclick="ifrSub()">点击提交</button>
  17. </p>
  18. <hr />
  19.     <script type="text/javascript">
  20.     function setValue()
  21.     {
  22.         var ofrm1 = document.getElementById("frame1").document;
  23.         var setInput = document.getElementById("setInput")
  24.         // //本页面中准备存入 iframe中的值
  25.         
  26.         alert(setInput.value)
  27.         if(ofrm1 == undefined)
  28.         {
  29.             // 拿到所有页面元素
  30.             ofrm1 = document.getElementById("frame1").contentWindow.document;
  31.             
  32.             //框架中值等于页面中的值
  33.             // 注意 下一条语句 不用 var 申明
  34.             ofrm1.getElementById("txt2").value = setInput.value
  35.             // 这句话 是检验 是否赋值成功 可以不写
  36.             var fva = ofrm1.getElementById("txt2").value;
  37.             alert("firefox/chrome赋值成功,结果为:" + fva )
  38.         }
  39.         else
  40.         {
  41.             document.frames["frame1"].document.getElementById("txt2").value =  setInput.value
  42.             // 这句话 是检验 是否赋值成功 可以不写
  43.             var fva = document.frames["frame1"].document.getElementById("txt1").value;
  44.             alert("IE 赋值成功,结果为:" + fva )
  45.         }
  46.     }
  47.     // 控制页面提交的方法
  48.     function ifrSub()
  49.     {
  50.         var ofrm1 = document.getElementById("frame1").document;
  51.         if(ofrm1 == undefined)
  52.         {
  53.             // 第一步拿到 iframe内的 所有元素
  54.             ofrm1 = document.getElementById("frame1").contentWindow.document;
  55.             // 模拟按钮点击提交
  56.             ofrm1.getElementById('sub').click()
  57.         }
  58.         else
  59.         {
  60.             // 模拟按钮点击提交
  61.             document.frames["frame1"].document.getElementById("sub").click();
  62.         }
  63.     }
  64. </script>
  65. </body>
  66. </html>
复制代码
iframe中:
  1. <!DOCTYPE html>
  2. <html lang="zh-CN">
  3. <head>
  4.     <meta charset="utf-8">
  5.     <title>按钮内嵌页面</title>
  6. </head>
  7. <body>
  8.     <form action="bt3.html" method="get">
  9.     <div>
  10.         <input id="txt1" name="txt1" type="text" value="测试" />
  11.         <input id="txt2" name="txt1" type="text" value="2" />
  12.     </div>
  13.         <button type="submit" id="sub" />提交</button>
  14.     </form>
  15. </body>
  16. </html>
复制代码
当然 我这也涉及到的点击提交按钮 模拟iframe 的提交
所以  补全dt3.html 这个 建议一块捣鼓
  1. <!DOCTYPE html>
  2. <html lang="zh-CN">
  3. <head>
  4.     <meta charset="utf-8">
  5.     <title>获取连接的测试</title>
  6.     <style>
  7.         p input{
  8.             display: inline-block;
  9.             line-height: 36px;
  10.             height:36px;
  11.             width:500px;
  12.         }
  13.     </style>
  14. </head>
  15. <body>
  16.     <p>
  17.         <input id="ttt" type="text" />
  18.     </p>
  19.     <script>
  20.         var url = window.location.href;
  21.         var ttt = document.getElementById("ttt");
  22.         ttt.value = url
  23.     </script>
  24. </body>
  25. </html>
复制代码

回复

使用道具 举报

664

主题

881

帖子

5169

积分

超级版主

Rank: 8Rank: 8

积分
5169
 楼主| 发表于 2018-7-4 09:51:03 | 显示全部楼层
document.frames('reportFrame').document 不是很了解,有两个document?其中document.frames('reportFrame')指的是你当前文档中一个name属性为'reportFrame'的frame的window对象(不是DOM对象),然后接一个".document"就取得了DOM对象,这个DOM对象就是你要查找frame中ID为reportFrameForm的DOM对象的context
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

快速回复 返回顶部 返回列表