js 监视 iframe 或 frameset 的内容变动(文盲第二版)

2024-02-25 20:48

本文主要是介绍js 监视 iframe 或 frameset 的内容变动(文盲第二版),希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

之前写了一个js 监视 iframe 或 frameset 的内容变动,结果有人留言了,然后仔细一看,代码通用性好差,当时自己的项目能用了,就没再继续研究了

今天经过一番调试,弄出来了下边这个效果,估计大家应该都能用起来了

文件:test_iframe_400.html

<!doctype html>
<html lang="en"><head><meta charset="UTF-8"><meta name="Generator" content="EditPlus®"><meta name="Author" content=""><meta name="Keywords" content=""><meta name="Description" content=""><title>Document</title></head><body><a href="test_iframe_100.html">100</a><a href="test_iframe_800.html">800</a><div style="height:400px;width:100%;">400</div></body>
</html>

文件:test_iframe_100.html

<!doctype html>
<html lang="en"><head><meta charset="UTF-8"><meta name="Generator" content="EditPlus®"><meta name="Author" content=""><meta name="Keywords" content=""><meta name="Description" content=""><title>Document</title></head><body><a href="test_iframe_400.html">400</a><a href="test_iframe_800.html">800</a><div style="height:100px;width:100%;">100</div></body>
</html>

文件:test_iframe_800.html

<!doctype html>
<html lang="en"><head><meta charset="UTF-8"><meta name="Generator" content="EditPlus®"><meta name="Author" content=""><meta name="Keywords" content=""><meta name="Description" content=""><title>Document</title></head><body><a href="test_iframe_100.html">100</a><a href="test_iframe_400.html">400</a><div style="height:800px;width:100%;">800</div></body>
</html>
先定义了三个iframe需要嵌套的文件,页面内互相链接其他内容
然后,开始实现监控iframe

文件:test_iframe.html

<!doctype html>
<html lang="en"><head><meta charset="UTF-8"><meta name="Generator" content="EditPlus®"><meta name="Author" content=""><meta name="Keywords" content=""><meta name="Description" content=""><title>Document</title><script type="text/javascript" src="http://static.caigou.com.cn/js/jquery-1.8.0.min.js"></script></head><body><div><form><input type="radio" value="test_iframe_100.html" name="url" /> 100高<input type="radio" value="test_iframe_400.html" name="url" /> 400高<input type="radio" value="test_iframe_800.html" name="url" /> 800高<br/><input type="radio" value="a" name="target" /> a窗口<input type="radio" value="b" name="target" /> b窗口<br/><input type="button" value="跳转" /></form></div><br/><br/><iframe src="test_iframe_100.html" name="a"></iframe><iframe src="test_iframe_400.html" name="b"></iframe><script>$(document).ready(function(){$('iframe').each(function(){var loaded = function(){console.log(this.location.href + ' is loading')var sn = 0;for(var i =0;i<frames.length;i++){if (frames[i]==this){sn=i;break;}}$('iframe').each(function(){if (this.contentWindow==frames[sn]){var ifr = $(this);$(this.contentDocument).ready(function(){console.log(frames[sn].location.href + ' is loaded')console.log(frames[sn].document.body.clientHeight)ifr.css({height:frames[sn].document.body.clientHeight+'px'})})}});}var unloaded = function(){var sn = 0;for(var i =0;i<frames.length;i++){if (frames[i]==this){sn=i;break;}}setTimeout(function(){frames[sn].onload = loaded;frames[sn].onunload = unloaded},0); // 哪怕是立刻执行该闭包,当前线程也已释放,frames中的对象已重构,所以执行到闭包内部时,frames重新定义加载事件}this.contentWindow.onload = loaded;this.contentWindow.onunload = unloaded;});});  </script></body>
</html>

好了,功能完成,包括url变动监听,url加载完成后宽高变动

这个监控其实很简单,那就是对window对象frames进行监控,当页面具有frameset和iframe时,frames中就具有了对应的子窗口

然后,对事件进行绑定,当window加载成功时,会触发onload事件,那么直接绑定就好

再然后,当页面地址发生变动时,可以触发window.onunload事件,但是已绑定的onload事件不好使了

然后,我们在触发onunload事件的线程外重新获取frames,并对相应的子窗口重新进行事件绑定,因为你页面地址一变动,frames就重构了

最后,再对文档加载完毕时进行监听,再最后,完成自己需要完成的功能即可

注意:对于跨域的页面引用,这个js不太适用,跨域问题如果谁解决了,请在本文后留言,文盲也想学习一下

这篇关于js 监视 iframe 或 frameset 的内容变动(文盲第二版)的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/746660

相关文章

Python实现word文档内容智能提取以及合成

《Python实现word文档内容智能提取以及合成》这篇文章主要为大家详细介绍了如何使用Python实现从10个左右的docx文档中抽取内容,再调整语言风格后生成新的文档,感兴趣的小伙伴可以了解一下... 目录核心思路技术路径实现步骤阶段一:准备工作阶段二:内容提取 (python 脚本)阶段三:语言风格调

一文详解如何在Python中从字符串中提取部分内容

《一文详解如何在Python中从字符串中提取部分内容》:本文主要介绍如何在Python中从字符串中提取部分内容的相关资料,包括使用正则表达式、Pyparsing库、AST(抽象语法树)、字符串操作... 目录前言解决方案方法一:使用正则表达式方法二:使用 Pyparsing方法三:使用 AST方法四:使用字

JS+HTML实现在线图片水印添加工具

《JS+HTML实现在线图片水印添加工具》在社交媒体和内容创作日益频繁的今天,如何保护原创内容、展示品牌身份成了一个不得不面对的问题,本文将实现一个完全基于HTML+CSS构建的现代化图片水印在线工具... 目录概述功能亮点使用方法技术解析延伸思考运行效果项目源码下载总结概述在社交媒体和内容创作日益频繁的

Node.js 数据库 CRUD 项目示例详解(完美解决方案)

《Node.js数据库CRUD项目示例详解(完美解决方案)》:本文主要介绍Node.js数据库CRUD项目示例详解(完美解决方案),本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考... 目录项目结构1. 初始化项目2. 配置数据库连接 (config/db.js)3. 创建模型 (models/

使用Node.js制作图片上传服务的详细教程

《使用Node.js制作图片上传服务的详细教程》在现代Web应用开发中,图片上传是一项常见且重要的功能,借助Node.js强大的生态系统,我们可以轻松搭建高效的图片上传服务,本文将深入探讨如何使用No... 目录准备工作搭建 Express 服务器配置 multer 进行图片上传处理图片上传请求完整代码示例

Python将博客内容html导出为Markdown格式

《Python将博客内容html导出为Markdown格式》Python将博客内容html导出为Markdown格式,通过博客url地址抓取文章,分析并提取出文章标题和内容,将内容构建成html,再转... 目录一、为什么要搞?二、准备如何搞?三、说搞咱就搞!抓取文章提取内容构建html转存markdown

用js控制视频播放进度基本示例代码

《用js控制视频播放进度基本示例代码》写前端的时候,很多的时候是需要支持要网页视频播放的功能,下面这篇文章主要给大家介绍了关于用js控制视频播放进度的相关资料,文中通过代码介绍的非常详细,需要的朋友可... 目录前言html部分:JavaScript部分:注意:总结前言在javascript中控制视频播放

使用Python实现获取网页指定内容

《使用Python实现获取网页指定内容》在当今互联网时代,网页数据抓取是一项非常重要的技能,本文将带你从零开始学习如何使用Python获取网页中的指定内容,希望对大家有所帮助... 目录引言1. 网页抓取的基本概念2. python中的网页抓取库3. 安装必要的库4. 发送HTTP请求并获取网页内容5. 解

Python实现常用文本内容提取

《Python实现常用文本内容提取》在日常工作和学习中,我们经常需要从PDF、Word文档中提取文本,本文将介绍如何使用Python编写一个文本内容提取工具,有需要的小伙伴可以参考下... 目录一、引言二、文本内容提取的原理三、文本内容提取的设计四、文本内容提取的实现五、完整代码示例一、引言在日常工作和学

SpringBoot使用Jasypt对YML文件配置内容加密的方法(数据库密码加密)

《SpringBoot使用Jasypt对YML文件配置内容加密的方法(数据库密码加密)》本文介绍了如何在SpringBoot项目中使用Jasypt对application.yml文件中的敏感信息(如数... 目录SpringBoot使用Jasypt对YML文件配置内容进行加密(例:数据库密码加密)前言一、J