计算机网络之iframe内联框架跨域
- iframe框架同源下的数据调用
- iframe框架非同源下的数据传输
一、iframe框架同源下的数据调用
1.父窗口向子窗口获取数据
//html1父级窗口
<iframe src="./2.html"></iframe>
<script type="text/javascript">
var oIframe = document.getElementsByTagName('iframe')[0];
oIframe.onload = function(){
console.log(oIframe.contentWindow.a);//打印出:22a
}
</script>
//html2子级窗口
<script type="text/javascript">
var a = "22a";
</script>
2.子窗口向父窗口获取数据
//父级窗口
<iframe src="./2.html"></iframe>
<script type="text/javascript">
var a = "11a";
</script>
//子级窗口
<script type="text/javascript">
var a = "22a";
console.log(window.parent.a);//11a
</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值向子窗口传送数据:父窗口代码==》
//父级窗口
<iframe src="http://xxx.cn/iframe/2.html"></iframe>
<script type="text/javascript">
//实现每点击一次修改一次内联框架的hash值
var oIframe = document.getElementsByTagName('iframe')[0];
var a = 1;
var oSrc = oIframe.src;
document.onclick = function(){
oIframe.src = oSrc + "#" + a;
a++;
}
</script>
子窗口代码==》
//子窗口
<script type="text/javascript">
//通过定时器时时获取父窗口修改的hash值(注意没修改时不获取)
var ohash = window.hash;//获取初始hash值
setInterval(function(){
if(ohash != window.location.hash){//判断时时hash值是否等于上一次的
console.log(window.location.hash);
ohash = window.location.hash;//将修改的hash值赋给ohash
}
},10);
</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>
计算机网络之iframe内联框架跨域的更多相关文章
- 第48天学习打卡(HTML 行内元素和块元素 列表 表格 视频和音频 页面结构分析 iframe内联框架 表单语法 )
行内元素和块元素 块元素 无论内容多少,该元素独占一行 (p.h1-h6) 行内元素 内容撑开宽度,左右都是行内元素的可以排在一行 (a.strong.em...) 列表 什么是列表 ...
- 重写iframe内联框架中的内容
重写iframe内联框架中的内容,不使用src指向页面url,主动写入HTML代码: var ifr = document.getElementById("CMBC-certificatio ...
- __x__(14)0906第三天__<iframe> 内联框架 引入有一个外部html页面
在现实开发中,不推荐使用内联框架,因为<iframe></iframe>中的内容不会被搜索引擎检索. 在特殊情况中,如内网项目,不用放在互联网上时,可以使用<iframe ...
- Iframe内联框架
iframe:内联框架标签,用于在网页中任意的位置嵌入另一个网页 <iframe src="url地址"> </iframe> iframe标签的常用属性 ...
- iframe与主框架跨域相互访问方法
iframe 与主框架相互访问方法 http://blog.csdn.net/fdipzone/article/details/17619673/ 1.同域相互访问 假设A.html 与 b.htm ...
- iframe与主框架跨域相互访问方法【转】
转自:http://blog.csdn.net/fdipzone/article/details/17619673 1.同域相互访问 假设A.html 与 b.html domain都是localho ...
- iframe 内联框架
Iframe - 设置高度和宽度 height 和 width 属性用于规定 iframe 的高度和宽度. 属性值的默认单位是像素,但也可以用百分比来设定(比如 "80%"). 实 ...
- iframe内嵌页面——跨域通讯
<template> <div class="act-form"> <iframe :src="src" ref=" ...
- 如何利用JQuery获取iframe内联框架对象?
parent.$("#iframeID").get(0).contentWindow; 父.$("选择器").get(0).contentWindow; get ...
随机推荐
- Java通过JDBC连接数据库的三种方式!!!并对数据库实现增删改查
前言 java连接数据库完整流程为: 1,获得驱动(driver),数据库连接(url),用户名(username),密码(password)基本信息的三种方式. 2,通过获得的信息完成JDBC实现连 ...
- IPV6地址中的%号什么意思
在我配置ipv6 网络中,会发现ipv6地址后有%号,这表示什么呢? IPv6地址中的百分号是网卡interface标识.这个表示该地址仅限于标号为21的网络接口(一般指网卡或者虚拟网卡).而在其他网 ...
- 我的Windows日常——Excel 打开.xls .xlsx 文件格式或文件扩展名无效
就问下各位,这个图,熟不熟?!! 不熟? 好吧当我没问,遇到过的没遇到过的都让我继续写下去吧.... 很多时候,我们新建了一个word文件,但是打开却会弹出这个小窗口,新建的文件出现这个问题,是什么原 ...
- git之命令git checkout
git checkout 最常用的就是切换分支,最近又发现一种新的用法: 有时候,在看代码的时候,不小心改动了部分代码,但跟项目没啥关系,这个时候,想不去提交这些代码,怎么处理呢? 使用git che ...
- keil 中报错和警告提示解决办法
1.warning: #1-D: last line of file ends without a newline 解决办法:在文件最后一行加入一个回车. 2.error: #134: expecte ...
- BERT模型在多类别文本分类时的precision, recall, f1值的计算
BERT预训练模型在诸多NLP任务中都取得最优的结果.在处理文本分类问题时,即可以直接用BERT模型作为文本分类的模型,也可以将BERT模型的最后层输出的结果作为word embedding导入到我们 ...
- Object 与 T的差别 导致swagger 的model 显示的数据为空
情景复现: 在整合swagger的时候,自己对原本定于的Object的data做了修改,把Object修改为了T,data的set方法的返回类型由于编译器没有报错,就没有去做修改, 这个时候就导致了, ...
- ModuleNotFoundError: No module named 'redis'
在安装过Redis后,通过Python程序导入redis时,遇到一个“ModuleNotFoundError: No module named redis”错误,网上查了下原因,解决办法如下: Pyt ...
- web 应用常见安全漏洞
1. SQL 注入 SQL 注入就是通过给 web 应用接口传入一些特殊字符,达到欺骗服务器执行恶意的 SQL 命令. SQL 注入漏洞属于后端的范畴,但前端也可做体验上的优化. 原因 当使用外部不可 ...
- 报错utf-8错误
当python运行总报utf-8错误时, f = open('CI_CUSER_2019040116033031.txt')data_app = pd.read_csv(f)print(data_ap ...