内容摘要

  • 父级获取iframe中的元素
  • 父级触发iframe中的函数
  • iframe触发父级元素绑定的事件
  • iframe触发父级函数方法
  • iframe触发父级元素的值

parent.html

<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>parent</title>
<style type="text/css" media="screen">
* {
margin: 0;
padding: 0;
}
iframe {
border: 0;
}
</style>
</head>
<body>
<p>下面为要调用的iframe标签,也可以通过类名来设置宽高</p>
<iframe src="ifr.html" name="ifr" width="100%" height="200" class="ifr" id="ifr"></iframe>
<!-- iframe触发父页面事件 -->
<p>我是父页面的内容,点击iframe中的按钮,触发父页面中的事件,改变 <span class="change1">#1</span></p>
<p class="change11">子级iframe会改变我的内容</p>
<!-- 父页面调用子iframe的方法 -->
<button class="p-btn1">点我调用子iframe中的方法</button>
<div id="parent-val">我是父页面的内容</div>
</body>
<script src="./jquery.min.js"></script>
<script>
function fun() {
alert("点击子元素中的按钮执行父元素中的函数")
}
$(".change1").on('click', function() {
console.log('parent')
$(this).html("#1#1")
})
$(".p-btn1").on('click', function() {
// 调用子iframe中的方法
parent.frames["ifr"].window.childMethods1();
$(".ifr")[0].contentWindow.childMethods1();
document.getElementById("ifr").contentWindow.childMethods1();
// 查找iframe中的元素
console.log($(".ifr").contents().find(".title").html())
// 原生方法候去iframe元素的值
let doc=document.getElementById("ifr").contentWindow.document;
let tit=doc.getElementById("ifr-val").innerHTML;
console.log(tit) })
</script>
</html>

ifr.html

<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>iframe1</title>
</head>
<body>
<div id="ifr-val">我是ifr的内容</div>
<p class="title">我是iframe1</p>
<button type="button" class="ifr1-btn">点我改变父页面内容 #1->#1#1</button>
</body>
<script src="jquery.min.js"></script>
<script>
function childMethods1() {
console.log('我是子iframe中的方法!')
}
$(".ifr1-btn").on('click', function() {
console.log("iframe1")
// 点击触发父页面的事件
parent.$(window.parent.document).find('.change1').click()
// 点击直接改变父页面中的dom
parent.$(window.parent.document).find('.change11').html("gggg")
// 点击执行父页面中定义的方法
parent.fun()
window.parent.fun()
// 获取父元素中元素的内容
console.log($(".p-btn1", window.parent.document).html())
console.log(window.parent.$(".p-btn1").html())
console.log(window.parent.document.getElementById("parent-val").innerHTML) })
</script>
</html>

总结

原生js

父调子

元素:window.frames[iframe的name属性值];

方法:

  • ① document.getElementById("子页面元素ID").contentWindow.子页面方法名;
  • ② document.getElementsByTagName("子页面元素标签名")[i].contentWindow.子页面方法名;
  • ③ document.getElementsByClassName("子页面元素类名")[i].contentWindow.子页面方法名;

子调父

元素:

  • ① window.parent.document.getElementById("父页面元素ID");
  • ②window.parent.document.getElementsByTagName("父页面元素标签名")[i];
  • ③window.parent.document.getElementsByClassName("父页面元素类名")[i];

方法:window.parent.父页面方法;

原生方法还是使用id比较靠谱

jquery

父调子

元素:$(iframe选择器).contents().find(iframe中元素选择器);

// 查找iframe中的元素
console.log($(".ifr").contents().find(".title").html())

方法:$(iframe选择器)[0].contentWindow.子页面方法名;

// 调用子iframe中的方法
parent.frames["ifr"].window.childMethods1();
$(".ifr")[0].contentWindow.childMethods1();

子调父

元素:

  • ① $(父页面元素选择器, window.parent.document);
  • ② window.parent.$(父页面元素选择器)
// 获取父元素中元素的内容
console.log($(".p-btn1", window.parent.document).html())
console.log(window.parent.$(".p-btn1").html())
parent.$(window.parent.document).find('.change11').html("gggg")

方法:window.parent.父页面方法;

// 点击执行父页面中定义的方法
parent.fun()
window.parent.fun()
// 点击触发父页面的事件
parent.$(window.parent.document).find('.change1').click()

iframe相关操作的更多相关文章

  1. jquery 实践操作:iframe 相关操作

    此篇记录关于HTML 的 iframe 元素 的相关记录 定义:iframe 元素会创建包含另外一个文档的内联框架(即行内框架). 常用的基本 iframe 设置(详细设置属性参考API:http:/ ...

  2. javascript iframe相关操作

    1. 获得iframe的window对象 iframeElement.contentWindow 2. 获得iframe的document对象 存在跨域访问限制. chrome:iframeEleme ...

  3. iframe的操作

    获取iframe的window,获取Iframe的document,获取父页面的window,某个环境是否iframe,动态创建iframe 这是demo.html,这个页用iframe嵌入了ifra ...

  4. 从零自学Hadoop(20):HBase数据模型相关操作上

    阅读目录 序 介绍 命名空间 表 系列索引 本文版权归mephisto和博客园共有,欢迎转载,但须保留此段声明,并给出原文链接,谢谢合作. 文章是哥(mephisto)写的,SourceLink 序 ...

  5. 从零自学Hadoop(21):HBase数据模型相关操作下

    阅读目录 序 变量 数据模型操作 系列索引 本文版权归mephisto和博客园共有,欢迎转载,但须保留此段声明,并给出原文链接,谢谢合作. 文章是哥(mephisto)写的,SourceLink 序 ...

  6. 理解CSV文件以及ABAP中的相关操作

    在很多ABAP开发中,我们使用CSV文件,有时候,关于CSV文件本身的一些问题使人迷惑.它仅仅是一种被逗号分割的文本文档吗? 让我们先来看看接下来可能要处理的几个相关组件的词汇的语义. Separat ...

  7. Liunx下的有关于tomcat的相关操作 && Liunx 常用指令

    先记录以下liunx下的有关于tomcat的相关操作 查看tomcat进程: ps-ef|grep java (回车) 停止tomcat进程: kill -9 PID (进程号如77447) (回车) ...

  8. pip的相关操作

    >Python中的pip是什么?能够做些什么? pip是Python中的一个进行包管理的东西,能够下载包.安装包.卸载包......一些列操作 >怎么查看pip的相关信息 在控制台输入: ...

  9. python操作mysql数据库的相关操作实例

    python操作mysql数据库的相关操作实例 # -*- coding: utf-8 -*- #python operate mysql database import MySQLdb #数据库名称 ...

随机推荐

  1. 树结构ztree的 ajax交互的简单使用

    今天做前端页面要用到树结构,用了第三方插件ztree,搞了好久不过终于弄出来了,, 一点小心得.(用的版本 V3 ) 首先看下载的文件结构: 一:将要用到的CSS 和 JS 拷贝到工程中,我这里在工程 ...

  2. 解决windows下tomcat端口被占用[Address already in use: JVM_Bind]

    有时候电脑比较卡,项目比较大的情况下,eclipse没有完全停止tomcat的情况下,下次启动会出现tomcat的端口被占用无法启动的情况,主要报如下错误 解决方案 window下打开命令窗口(快捷键 ...

  3. Sass、Less和Stylus

    1.背景介绍 1.Sass背景介绍 Sass是对CSS(层叠样式表)的语法的一种扩充,诞生于2007年,最早也是最成熟的一款CSS预处理器语言,它可以使用变量.常量.嵌套.混 入.函数等功能,可以更有 ...

  4. Java多线程中的常用方法

    本文将带你讲诉Java多线程中的常用方法   Java多线程中的常用方法有如下几个 start,run,sleep,wait,notify,notifyAll,join,isAlive,current ...

  5. #pragma pack 在BITMAP结构体定义中的使用

    BITMAP位图文件主要分为如下3个部分: 块名称 对应Windows结构体定义 大小(Byte) 文件信息头 BITMAPFILEHEADER 14 位图信息头 BITMAPINFOHEADER 4 ...

  6. Django 多条件多表查询实例问题

    当时想做一个多条件查询,但是对于要查询的信息,是分布在不同的表里,这就涉及到了多表查询问题. DjangoBook里提到了一些查询的方式,但是不够全面,就去百度搜了下. 当去网上百度搜多表查询,或多条 ...

  7. MFC简单的橡皮筋程序

    void CMainWindow::OnLButtonDown(UINT nFlags,CPoint point) { //以下三个是在CMainWindow中定义 m_ptFrom=point; m ...

  8. PLM数据库迁移注意事项

    需求: PLM应用程序与数据库是存放在同一台服务器上,现需要将数据库迁移到数据库服务器10.10.1.10中. 10.10.1.10中安装了三个实例,MSSQLSERVER.MSSQLSERVER_P ...

  9. MyBatis总结一:快速入门

    简介 MyBatis 是一款优秀的持久层框架,它支持定制化 SQL.存储过程以及高级映射.MyBatis 避免了几乎所有的 JDBC 代码和手动设置参数以及获取结果集.MyBatis 可以使用简单的 ...

  10. solr :term 查询, phrase查询, boolean 查询

    搜索总体有:term 查询, phrase查询, boolean 查询 1. SOLR搜索覆盖度和准确度保证的三个搜索方式: 保证准确率: AND: Search for two different ...