计算机网络之iframe内联框架跨域

  • iframe框架同源下的数据调用
  • iframe框架非同源下的数据传输

一、iframe框架同源下的数据调用

1.父窗口向子窗口获取数据

 1 //html1父级窗口
 2 <iframe src="./2.html"></iframe>
 3 <script type="text/javascript">
 4     var oIframe = document.getElementsByTagName(‘iframe‘)[0];
 5     oIframe.onload = function(){
 6         console.log(oIframe.contentWindow.a);//打印出:22a
 7     }
 8 </script>
 9 //html2子级窗口
10 <script type="text/javascript">
11     var a = "22a";
12 </script>

2.子窗口向父窗口获取数据

 1 //父级窗口
 2 <iframe src="./2.html"></iframe>
 3 <script type="text/javascript">
 4     var a = "11a";
 5 </script>
 6 //子级窗口
 7 <script type="text/javascript">
 8     var a = "22a";
 9     console.log(window.parent.a);//11a
10 </script>

注:

1.获取iframe内的window又多种方法,示例中采用获取iframe标签再通过contentWindow属性获取,是一种通用的写法。

标准浏览器:window.frames[‘iframe的name‘]。采用window上的frame属性然后通过内联框架的name属性获取。

IE专用:document.iframes[‘iframe的name’].contentWindow。

     docuemtn.iframes[i].contentWindow。(i表示索引)

2.获取父级窗口的对象:window.parent

3.获取顶级窗口的对象:window.top

4.获取属于自己的窗口对象:window.self

二、iframe框架非同源下的数据传输(跨域传输)

1.通过hash值向子窗口传送数据:父窗口代码==》

 1 //父级窗口
 2 <iframe src="http://xxx.cn/iframe/2.html"></iframe>
 3 <script type="text/javascript">
 4     //实现每点击一次修改一次内联框架的hash值
 5     var oIframe = document.getElementsByTagName(‘iframe‘)[0];
 6     var a = 1;
 7     var oSrc = oIframe.src;
 8     document.onclick = function(){
 9         oIframe.src = oSrc + "#" + a;
10         a++;
11     }
12 </script>

子窗口代码==》

 1 //子窗口
 2 <script type="text/javascript">
 3     //通过定时器时时获取父窗口修改的hash值(注意没修改时不获取)
 4     var ohash = window.hash;//获取初始hash值
 5     setInterval(function(){
 6         if(ohash != window.location.hash){//判断时时hash值是否等于上一次的
 7             console.log(window.location.hash);
 8             ohash = window.location.hash;//将修改的hash值赋给ohash
 9         }
10     },10);
11 </script>

这种做法是可以实现时时的跨域内联框架的数据传输,但是定时器的性能损耗太大,并不适合。而且这种方法也仅仅适应父级窗口向子级窗口传输数据。

2.通过window.name实现跨域内联框架数据传输(需要借助一个同源的页面),解决子窗口向父级窗口传输数据:

//子窗口有一个变量
var a = 1;
window.name = a;

在非同源的父级窗口(跨域获取子窗口变量的值的方法)

<iframe src="http:xxx.cn\iframe\2.html"></iframe>
<script type="text/javascript">
    //实现每点击一次修改一次内联框架的hash值
    var oIframe = document.getElementsByTagName(‘iframe‘)[0];
    oIframe.src = "3.html";//3是一个同源同源的页面
    oIframe.onload = function(){
        console.log(oIframe.contentWindow.name);
    }
</script>

原文地址:https://www.cnblogs.com/ZheOneAndOnly/p/10699506.html

时间: 2024-08-29 11:27:49

计算机网络之iframe内联框架跨域的相关文章

iframe与主框架跨域相互访问方法

iframe 与主框架相互访问方法  http://blog.csdn.net/fdipzone/article/details/17619673/ 1.同域相互访问 假设A.html 与 b.html domain都是localhost (同域) A.html中iframe 嵌入 B.html,name=myframe A.html有js function fMain() B.html有js function fIframe() 需要实现 A.html 调用 B.html 的 fIframe(

iframe与主框架跨域相互访问方法【转】

转自:http://blog.csdn.net/fdipzone/article/details/17619673 1.同域相互访问 假设A.html 与 b.html domain都是localhost (同域) A.html中iframe 嵌入 B.html,name=myframe A.html有js function fMain() B.html有js function fIframe() 需要实现 A.html 调用 B.html 的 fIframe(),B.html 调用 A.htm

iframe 内联框架

Iframe - 设置高度和宽度 height 和 width 属性用于规定 iframe 的高度和宽度. 属性值的默认单位是像素,但也可以用百分比来设定(比如 "80%"). 实例 <iframe src="demo_iframe.html" width="200" height="200"></iframe> Iframe - 删除边框 frameborder 属性规定是否显示 iframe 周围的

iframe内嵌页面——跨域通讯

  <template> <div class="act-form"> <iframe :src="src" ref="iframe" frameborder="no" align="middle" width="100%" height="600px" scrolling="auto" /> <el-bu

iframe内联框架

父页面调用子页面js方法: (1) iframe_name.window.方法名() (2)document.getElementById().contentWindow.方法() 子页面调用父页面方法: (1)parent.方法名() 在父页面中刷新子页面: (1)document.getElementById().src=

HTML的内联框架(iframe)

HTML的内联框架(iframe) 第一种:打开网页就是带内联框架的页面 可以实现在自己的网页内部,打开另一个网页 语法: <!--src:地址frameborder:0为无边框:1为有边框--><iframe src="https://www.baidu.com/" frameborder="0" width="800" height="600"></iframe> 完整代码如下: <

内联框架

主文件: <!doctype html> <html> <head> <meta charset="utf-8"> <title>无标题文档</title> </head> <body> <iframe src="text.html" width="500" height="500" name="one"&

关于内联框架

关于内联框架 作者:Dante Fung WHAT? 概述 内联框架(inner frame),是一个非常有用的标签,早期用它来模拟Ajax效果,使用iframe可以在一个表格内调用一个外部文件,非常有用.现在在富本文编辑器开发中它也举足轻重. 它又是一个特别的元素,最早出现IE4.0中,后纷纷被其他游览器吸纳,由于IE不开源,iframe在各游览器中都有很大差异. WHY? 1.复用 比较早期的网站使用 iframe,主要是用于导航栏(navigator).为什么? 问题1:一个网站很多页面的

html锚点及内联框架

html锚点: 1.创建 <a href="  "  name="maodian"></a> 2.指向<a href="#maodian">点击</a> 内联框架: 1.创建 <iframe src="  " name="名称” frameborder="1"></iframe> 2.指向<a href=" &