关于iframe
iframe一般用来嵌套其他页面来使用
1、如何使用?
<iframe id="iframe1" src="2.html" frameborder="0" width="1000" height="300"></iframe>
src-定义引入的页面地址;width,height-定义iframe宽高;
2、父页面如何跟iframe的子页面通讯?
// 找到iframe元素
var oIframe1 = document.getElementById('iframe1');
// 获取iframe页面的window对象
var iframe1_window = oIframe1.contentWindow || oIframe1.contentDocument;
document.getElementById('btn_html2').onclick = function(){
// 操作iframe上的文档元素
iframe1_window.document.getElementById('div').style.backgroundColor = "red";
}
3、被iframe嵌套的字页面如何跟父页面通讯?
被iframe的子页面,可以通过window.parent获取上一级的父页面window对象,如果有多级嵌套,要找最外层的父极时,可以使用window.top找到最外层父极元素。例如:父极元素有对象 var obj = { arr: [] }; 然后,子页面想操作修改arr值:
// 给top最外层父页面赋值
document.getElementById('btn3_html3').onclick = function(){
window.top.obj.arr = [1,2,3];
}
4、上面赋值没问题,但是如果你在父页面用 instanceof 对arr做数组检测,会出问题
当3中赋值完后,在父页面对arr做检测:
console.log(obj.arr instanceof Array);
结果会返回 false,问题来了,明明是一个数组为什么给到父页面却不认识是一个数组了?
原因是:instanceof 操作符,它假定单一的全局执行环境,如果网页中包含多个框架,那实际上就存在多个不同全局执行环境,从而存在多个不同版本的Array构造函数,如果从一个框架向另一个框架传入数组,那传入的数组与第一个框架原生创建的数组分别具有各自不同的构造函数。
在ES5中,为了解决这个问题,实现了 Array.isArray(值) 的方法,确定某个值是否是数组,而不管他是哪个全局执行环境中实现的。但IE8及以下不支持该方法。终极解决办法:
Object.prototype.toString.call([]); // 返回"[object Array]"
5、有时候,山寨、钓鱼网站会用iframe的这种形式欺骗用户,如何禁止被其他网站使用嵌套自己网站?
if(window.top != window){
window.top.location.href = "xxx.html";
}
如果 window.top != window 就跳回到自己的页面。
关于iframe的更多相关文章
- 完美判断iframe是否加载完成
var iframe = document.createElement("iframe"); iframe.style.width = "265px"; ifr ...
- js学习笔记:操作iframe
iframe可以说是比较老得话题了,而且网上也基本上在说少用iframe,其原因大致为:堵塞页面加载.安全问题.兼容性问题.搜索引擎抓取不到等等,不过相对于这些缺点,iframe的优点更牛,跨域请求. ...
- 页面嵌入dom与被嵌入iframe的攻防
1.情景一:自己的页面被引入(嵌入)至别人的页面iframe中 if(window.self != window.top){ //url是自己页面的url window.top.location.hr ...
- iframe用法
<iframe src="http://caiyanli.top/" height="500" width="500" frameb ...
- 如何获取url中的参数并传递给iframe中的报表
在使用报表软件时,用户系统左边一般有目录树,点击报表节点就会在右侧网页的iframe中显示出报表,同时点击的时候也会传递一些参数给网页,比如时间和用户信息等.如何使网页中的报表能够获取到传递过来的参数 ...
- JavaScript权威设计--Window对象之Iframe(简要学习笔记十四)
1.Window对象属性的文档元素(id) 如果在HTML文档中用id属性来为元素命名,并且如果Window对象没有此名字的属性,Window对象会赋予一个属性,它的名字是id属性的值,而他们的值指向 ...
- ASP.NET 页面禁止被 iframe 框架引用
两个站点: a.sample.com b.sample.com a.sample.com 站点中的一段示例 JS 代码: var iframe = document.createElement(&qu ...
- 父页面操作iframe子页面的安全漏洞及跨域限制问题
一.父子交互的跨域限制 同域情况下,父页面和子页面可以通过iframe.contentDocument或者parent.document来交互(彼此做DOM操作等,如父页面往子页面注入css). 跨域 ...
- 解决iframe作为子窗口,刷新后iframe页面跳转到其它页面的问题
转载请在页首注明作者与出处 http://www.cnblogs.com/zhuxiaojie/p/5990262.html 前言: 在开发网站时,尤其是管理后台,我们经常会使用iframe作为内容窗 ...
- 三种上传文件不刷新页面的方法讨论:iframe/FormData/FileReader
发请求有两种方式,一种是用ajax,另一种是用form提交,默认的form提交如果不做处理的话,会使页面重定向.以一个简单的demo做说明: html如下所示,请求的路径action为"up ...
随机推荐
- BZOJ1500[NOI2005]维修数列
Description Input 输入的第1 行包含两个数N 和M(M ≤20 000),N 表示初始时数列中数的个数,M表示要进行的操作数目.第2行包含N个数字,描述初始时的数列.以下M行,每行一 ...
- jquery.mobiscroll仿Iphone ActionSheet省市区联动
1 <!DOCTYPE html> 2 <html lang="en"> 3 <head> 4 <meta charset="u ...
- maven/gradle 打包后自动上传到nexus仓库
前提: nexus的相关repository必须设置允许redeploy,参考下图: maven项目: pom.xml中增加以下节点: <distributionManagement> & ...
- 迁移 SQL Server 数据库到 Azure SQL 实战
最近有个维护的项目需要把 SQL Server 2012 的数据库迁移到 Azure SQL 上去,迁移过程可谓一波三折,故在此分享这次迁移中碰到的点点滴滴,希望对朋友们有所帮助. 文章来源:葡萄城产 ...
- xamarin.forms新建项目android编译错误
vs2015 update3 新建的xamarin.forms项目中的android项目编译错误.提示缺少android_m2repository_r22.zip,96659D653BDE0FAEDB ...
- 初探jquery.slimscroll.js和iscroll5.js
网上关于实现各种滚动效果的插件不胜枚举,这里,我简单介绍一下自己用过的两款比较有代表性的插件: 1.jquery.slimscroll.js,需要先引入jquery类库,主要用于模拟传统的浏览器滚动条 ...
- 学习vue.js 第一天
最近听到很多人都在用Vue.js ,我也想凑凑热闹,来个入门 啥的 ,要不以后人家说,啥都不知道,多low 看到官网 是这样介绍Vue.js Vue.js(读音 /vjuː/, 类似于 view) 是 ...
- 关于delphi7的四舍五入
round 函数是银行用的 采用了 四舍六入5留偶 网上找到了个实现方法 先乘1000,用Trunc取整,除10取余,余数再取整,如果大于5,进位,小于5不进位. 函数就好写了 现在只写一个保留两 ...
- 常用js归纳
一.获取地址栏参数 /*根据name获取URL参数*/ function getQueryString(name) { var reg = new RegExp("(^|&)&quo ...
- 微博轻量级RPC框架Motan
Motan 是微博技术团队研发的基于 Java 的轻量级 RPC 框架,已在微博内部大规模应用多年,每天稳定支撑微博上亿次的内部调用.Motan 基于微博的高并发和高负载场景优化,成为一套简单.易用. ...