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的更多相关文章

  1. 完美判断iframe是否加载完成

    var iframe = document.createElement("iframe"); iframe.style.width = "265px"; ifr ...

  2. js学习笔记:操作iframe

    iframe可以说是比较老得话题了,而且网上也基本上在说少用iframe,其原因大致为:堵塞页面加载.安全问题.兼容性问题.搜索引擎抓取不到等等,不过相对于这些缺点,iframe的优点更牛,跨域请求. ...

  3. 页面嵌入dom与被嵌入iframe的攻防

    1.情景一:自己的页面被引入(嵌入)至别人的页面iframe中 if(window.self != window.top){ //url是自己页面的url window.top.location.hr ...

  4. iframe用法

    <iframe src="http://caiyanli.top/" height="500"  width="500" frameb ...

  5. 如何获取url中的参数并传递给iframe中的报表

    在使用报表软件时,用户系统左边一般有目录树,点击报表节点就会在右侧网页的iframe中显示出报表,同时点击的时候也会传递一些参数给网页,比如时间和用户信息等.如何使网页中的报表能够获取到传递过来的参数 ...

  6. JavaScript权威设计--Window对象之Iframe(简要学习笔记十四)

    1.Window对象属性的文档元素(id) 如果在HTML文档中用id属性来为元素命名,并且如果Window对象没有此名字的属性,Window对象会赋予一个属性,它的名字是id属性的值,而他们的值指向 ...

  7. ASP.NET 页面禁止被 iframe 框架引用

    两个站点: a.sample.com b.sample.com a.sample.com 站点中的一段示例 JS 代码: var iframe = document.createElement(&qu ...

  8. 父页面操作iframe子页面的安全漏洞及跨域限制问题

    一.父子交互的跨域限制 同域情况下,父页面和子页面可以通过iframe.contentDocument或者parent.document来交互(彼此做DOM操作等,如父页面往子页面注入css). 跨域 ...

  9. 解决iframe作为子窗口,刷新后iframe页面跳转到其它页面的问题

    转载请在页首注明作者与出处 http://www.cnblogs.com/zhuxiaojie/p/5990262.html 前言: 在开发网站时,尤其是管理后台,我们经常会使用iframe作为内容窗 ...

  10. 三种上传文件不刷新页面的方法讨论:iframe/FormData/FileReader

    发请求有两种方式,一种是用ajax,另一种是用form提交,默认的form提交如果不做处理的话,会使页面重定向.以一个简单的demo做说明: html如下所示,请求的路径action为"up ...

随机推荐

  1. [poj1113][Wall] (水平序+graham算法 求凸包)

    Description Once upon a time there was a greedy King who ordered his chief Architect to build a wall ...

  2. Django基础之安装配置

    安装配置 一 MVC和MTV模式 著名的MVC模式:所谓MVC就是把web应用分为模型(M),控制器(C),视图(V)三层:他们之间以一种插件似的,松耦合的方式连接在一起. 模型负责业务对象与数据库的 ...

  3. 完整部署CentOS7.2+OpenStack+kvm 云平台环境(3)--为虚拟机指定固定ip

    之前在测试环境(centos7.2)上部署了openstack云平台(完整部署CentOS7.2+OpenStack+kvm 云平台环境(1)--基础环境搭建),openstack在neutron组网 ...

  4. python网络编程-socket编程

     一.服务端和客户端 BS架构 (腾讯通软件:server+client) CS架构 (web网站) C/S架构与socket的关系: 我们学习socket就是为了完成C/S架构的开发 二.OSI七层 ...

  5. sql中 truncate 、delete与drop区别

    相同点: 1.truncate和不带where子句的delete.以及drop都会删除表内的数据. 2.drop.truncate都是DDL语句(数据定义语言),执行后会自动提交. 不同点: 1. t ...

  6. linux下交叉编译go项目

    1:下载go源码,以1.7.1版本为例: wget https://storage.googleapis.com/golang/go1.7.1.linux-amd64.tar.gz 2:解压源码 ta ...

  7. 图文混排--CoreText的简单运用

    常见的在一些微博微信中可以看见一段文字中有不同的字体,字体有不同的颜色,并且可能会有一些笑脸之类的表情,这些可以通过图文混排做到. 图文混排可以通过WebView和CoreText做到,其他还有别的方 ...

  8. svn服务器地址变换以后,mac下的处理方法

    svn服务器地址变换之后,mac下的处理方法 svn服务器地址变换之后,mac下的处理方法 1.进入终端,进入项目所在的文件夹下: cd 项目位置/ 2.查看svn信息 svn info 3.输出结果 ...

  9. Python 【第十章】 Django路由

    路由可以简单理解就是 URL -> 函数名 例如: /login1/ -> 函数名 urls.py文件中 urlpatterns = [ # url(r'^admin/', admin.s ...

  10. mybatis源码分析:

    p.p1 { margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px "Helvetica Neue"; color: #e4af0a } p. ...