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. win7下安装配置nodejs、使用npm安装express

    1.下载node http://nodejs.cn/download/ 这里下载自己需要的 我的环境是win764,下载地址是:https://nodejs.org/dist/v6.2.0/win-x ...

  2. Java GC系列

    一个国外站点的Java JVM调优系列 下面是国内站点翻译的 http://www.importnew.com/1993.html

  3. redis3.0常用命令

    1.服务器启动 1)快捷启动 $redis-server 2)指定配置文件启动 $redis-server redis.conf 2.客服端启动 1)快捷无密码启动 $redis-cli 2)有密码和 ...

  4. [LeetCode] Guess Number Higher or Lower II 猜数字大小之二

    We are playing the Guess Game. The game is as follows: I pick a number from 1 to n. You have to gues ...

  5. CSS系列——前端进阶之路:初涉Less

    前言:最近帮一个朋友解决点问题,在查看组件源码的时候涉及到了less语法,这可难倒博主了.没办法,既然用到就要学呗,谁让咱是无所不能的程序猿呢!所以今天来学习下Less,算是笔记,也希望给初学less ...

  6. 关于js解析的一点小问题

    先来看一下下面的一段代码有什么问题? <html><head><script src="./jquery.min.js"></script ...

  7. WebAPI中无法获取Session对象的解决办法

    在MVC的WebApi中默认是没有开启Session会话支持的.需要在Global中重写Init方法来指定会话需要支持的类型 public override void Init() { PostAut ...

  8. ajax同步处理(使得JS按顺序执行)

    在项目中碰到一个问题: 图一: 图二: 函数1代码:这里是因为有ajax请求,默认的是异步的 //点击分页页码,请求后台返回对应页码的数据 function getdata(fewPage,flag, ...

  9. jquery-三级联动

    html <!DOCTYPE html> <html> <head> <meta charset=gbk /> <title>selectL ...

  10. React.js 官网入门教程 分离文件 操作无法正常显示HelloWord

    对着React官网的教程练习操作,在做到分离文件练习时,按照官网步骤来却怎么也无法正常显示HelloWord. 经测试,html文件中内容改为: <!DOCTYPE html><ht ...