将内容加载到 iframe 中避免内存泄漏

2024-04-01

我正在开发一个在 iframe 中呈现内容的嵌入式系统。它使用signalR(基于ajax)和jquery。随着时间的流逝,浏览器变得越来越慢,内存使用量也越来越高。所以我希望消除所有潜在的内存问题。

当新页面加载到 iframe 中时,我附加单击和焦点事件处理程序。

就在要替换 iframe 页面之前,我取消附加它们。

但是,如果我检查 $.cache(在使用 Firefox 的 PC 上进行测试时,因此与我的真实系统不完全相同),它仍然显示 $.cache 每次重新加载 iframe 时都会获得越来越多的元素。

这是正确的做事方式吗?还有什么我可以尝试的吗?为什么 $.cache 不断增长?

(如果您有兴趣,我正在使用带有 Midori 浏览器的树莓派(运行 Linux),尽管我可以选择其他(主要是 Web-kit)浏览器)。

我用 Javascript 来更改 iframe 内容......

hubProxy.client.loadPage = function (pageFilename, pageType) {
    frameNode = $("#myIframe").contents();
    $("a", frameNode).off();  
    $("#myIframe")[0].src = pageFilename;
};

编写一个包装 div 来保存您的 iframe 容器,例如...

<div id="myIframeWrapper"></div>

现在,您可以在前一个 iframe 页面之后进行清理,这可以通过完全清除 DOM 中与前一个 iframe 相关的所有内容来完成,然后在调用 loadPage 函数时使用构造函数创建一个新的 iframe。

hubProxy.client.loadPage = function (pageFilename, pageType) {

    var myNewIframe = '<iframe id="myIframe" src="' + pageFilename + '"></iframe>';

    // Remove old iframe from the DOM and replace with new iframe
    if ($("#myIframe")) {
        $("#myIframeWrapper").empty().append( myNewIframe );
    }

    var frameNode = $("#myIframe").contents();
    $("a", frameNode).off();
};

您会注意到分配 iframe 源的原始行已被删除,因为它已在新的构造函数中得到考虑。这还有一个好处是可以使用构造函数添加其他 iframe 属性,例如 iframe 大小等。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

将内容加载到 iframe 中避免内存泄漏 的相关文章

  • 可以使用 jQuery 或 Javascript 将图片的特定部分用作链接吗?

    我有这个想法 将图片 而不是文本 的各个部分链接到不同的页面或网站 并且我想在不实际创建不同的照片并将它们彼此靠近的情况下完成 这样看起来就像是一张完整的图片 这里有人知道如何使用 JavaScript 的变体 例如 jQuery 或纯 J
  • Node.js:如何在检索数据(块)时关闭响应/请求

    我正在用 node js 构建一个应用程序 它加载多个页面并分析内容 因为 node js 发送块 所以我可以分析这些块 如果一个块包含例如索引 nofollow 我想关闭该连接并继续其余部分 var host example com to
  • 从未用 @flow 标记的导入文件中获取类型定义

    TL DR我怎么告诉flow从未声明的导入模块导入类型定义 flow 加长版 流接缝能够从不使用流语法的文件中派生类型 请参阅示例 示例文件 flow js if Math random lt 0 5 var y hello else va
  • 音频 blob 的 URL.createObjectURL 在 Firefox 中给出 TypeError

    我正在尝试从创建的音频 blob 创建对象 URLgetUserMedia 该代码在 Chrome 中可以运行 但在 Firefox 中存在问题 错误 当我打电话时stopAudioRecorder 它停在audio player src
  • 如何将 Google Charts 与 Vue.js 库一起使用?

    我正在尝试使用 Vue js 库使用 Google Charts 制作图表 但我不知道如何添加到 div 这是我尝试做的 这是如何使用普通 javascript 添加图表 这是文档的代码示例 https developers google
  • IE 中的 Google 文档查看器

    我到处寻找解决方案 但找不到 我在用着谷歌文档查看器 https drive googleblog com 2009 09 view online files using google docs html查看 PDF 文件 这是一个很棒的工
  • jquery从变量中删除html元素

    我将 html 保存在变量中 var itinerary events today html 我有很多 html 和一个按钮我想删除 它的 ID 为 myButton 如何从变量中保存的 html 中删除它 我建议这种方法 var itin
  • 跟踪用户何时点击浏览器上的后退按钮

    是否可以检测用户何时单击浏览器的后退按钮 我有一个 Ajax 应用程序 如果我可以检测到用户何时单击后退按钮 我可以显示适当的数据 任何使用 PHP JavaScript 的解决方案都是优选的 任何语言的解决方案都可以 只需要我可以翻译成
  • 在javascript中解析json - 长数字被四舍五入

    我需要解析一个包含长数字的 json 在 java servlet 中生成 问题是长数字被四舍五入 当执行这段代码时 var s x 6855337641038665531 var obj JSON parse s alert obj x
  • Iframe 相对路径挑战

    我有一个页面 在页面内有一个 Iframe 目录如下 Folder1 Folder2 IframeCSS IframeCSS Css iframePage1 html stuff css parentPage1 html 在 iframeP
  • Grails 在 javascript 内的 GSP 站点中使用 grails var

    我有一个在 GSP 文件中的 javascript 代码中使用 grails 变量值的问题 例如 我有一个会话值session getAttribute selectedValue 我想在 javascript 代码部分使用这个值 我现在的
  • 使用 JQuery 更改元素的顺序

    有人知道我做错了什么吗 我正在尝试更改某些图像的显示顺序 我希望每次按下按钮时图像都会向右 向左移动一个位置 这是我尝试过的 但没有运气 任何帮助或见解将不胜感激 rightShift click function img hide var
  • FireFox 中的自动滚动

    我的应用程序是实时聊天 我有一个 Div 来包装消息 每条消息都是一个 div 所以 在几条消息之后 我的 DOM 看起来像这样 div div Message number two div div div div
  • 如何获取给定 DOM 元素的所有定义的 CSS 选择器?

    如何使用 jQuery 获取给定 DOM 元素的所有定义的 CSS 选择器 定义后 我的意思是在应用于任何样式表的所有 CSS 选择器document 在某种程度上 这类似于 FireBug 实现的功能 其中显示所选 DOM 元素的所有应用
  • 为什么我不能在 AngularJS 中使用 data-* 作为指令的属性名称?

    On the t他的笨蛋 http plnkr co edit l3KoY3 p preview您可以注意到属性名称模式的奇怪行为data 在指令中 电话 Test of data named attribute br
  • 在 vue.js 中访问数组对象属性

    给定以下数组vue js packageMaps Object packageMap 0 Object Id 16 PackageType flag list ProductCode F BannerBase packageMap 1 Ob
  • Javascript转换时区问题

    我在转换当前时区的日期时间时遇到问题 我从服务器收到此日期字符串 格式为 2015 10 09T08 00 00 这是中部时间 但是当我使用 GMT 5 中的 new Date strDate 转换此日期时间时 它返回给我的信息如下 这是不
  • 条件在反应本机生产中失败,但在开发中有效

    我创建了一个反应本机应用程序 我需要通过它进行比较 如果属实 就会执行死刑 问题是 该条件适用于 React Native 开发模式 而不适用于 React Native 生产版本 我使用 firebase 作为数据库 也使用 redux
  • 将 MQTTNet 服务器与 MQTT.js 客户端结合使用

    我已经启动了一个 MQTT 服务器 就像this https github com chkr1011 MQTTnet tree master例子 该代码托管在 ASP Net Core 2 0 应用程序中 但我尝试过控制台应用程序 但没有成
  • Spring Rest 和 Jsonp

    我正在尝试让我的 Spring Rest 控制器返回jsonp但我没有快乐 如果我想返回 json 但我有返回的要求 完全相同的代码可以正常工作jsonp我添加了一个转换器 我在网上找到了用于执行 jsonp 转换的源代码 我正在使用 Sp

随机推荐

  • iOS 6 问题将 MPMediaItem 转换为 NSData

    我试过下面的代码 void mediaItemToData MPMediaItem curItem NSURL url curItem valueForProperty MPMediaItemPropertyAssetURL AVURLAs
  • HTML 敏捷包设置

    我正在使用 Agility Pack 来解析 HTML 遵循这个问题在 C 中解析 html 的最佳方法是什么 https stackoverflow com questions 56107 what is the best way to
  • 无法在 VSCode 中调试 Typescript

    这是我的 launch json version 0 2 0 configurations type node name Launch Server request launch program workspaceRoot server s
  • Spring Boot + Gradle - 在哪里放置环境配置?

    我正在 Spring Boot 中开发一个简单的应用程序 它是在本地开发的 并且可以工作 Gradle H2 数据库的连接属性设置为application properties放置在项目的根目录下 Maven 文件夹结构 src main
  • 更改导航栏颜色

    我知道从 API 21 开始可以更改导航栏的颜色 我查看了 React Native 的文档 但找不到方法来做到这一点 我知道的唯一方法是创建一个本机模块 但这似乎不是一个好的解决方案 因为我正在使用 Expo 有内置的方法可以做到这一点吗
  • BizTalk 平面文件架构 - 如何接受 LF 或 CRLF 作为行分隔符

    我们的客户向我们发送一个平面文件作为输入 然后我们将其转换为 XML 文件 然后发送到目标系统 平面文件由多行组成 每行由 LF 或 CRLF 分隔 如何创建平面文件架构 以便 BizTalk 可以解释每一行数据 无论该行是由 LF 0x0
  • ADODB 记录集列标题

    我正在复制ADODB Recordset数据到 Excel 文件 但它将记录集数据复制到 Excel 没有列标题 我使用的是 MS Access 2013 CompyFromRecordset命令 我的问题是 有没有办法复制RecordSe
  • 可视化二分图

    有人可以推荐一个库或代码来可视化 C 中的二分图吗 Graph 似乎不直接支持这种图 但有 一些支持解开顶点 我想创建一些像这样的图形二部图 http upload wikimedia org wikipedia commons e e8
  • 如何使用 spl_autoload() 代替 __autoload()

    根据http php net manual en language oop5 autoload php http php net manual en language oop5 autoload php神奇的功能 autoload 自 PH
  • @singleton 的行为类似于@stateless bean

    我正在开发一个应用程序 java中的企业应用程序 其中我需要由多个线程同时共享的单个实例 我使用了 singleton 当每个用户登录时 通过调用 setTeleCallersDetails 远程方法在电话呼叫者列表中设置一个值 但在某些时
  • 如何从 Hive 中的 json 字符串中提取选定的值

    我在 Hive 中运行一个简单的查询 生成以下输出 以及一些其他附加列 col1 col2 A variable1 123 variable2 456 variable3 789
  • Marshal.GetFunctionPointerForDelegate 如何作用于实例成员?

    我想知道 Marshal GetFunctionPointerForDelegate 即我想知道它如何将委托转换为非静态函数到函数指针 它是否动态生成以某种方式附加实例的代码存根 如果是这样 这不会泄漏内存吗 也许委托在其终结器中释放了它
  • 如何在覆盖控制器后在 activeadmin 表单中显示错误

    我遇到一种情况 我需要覆盖 activeadmin 中的创建 我自动填充字段 如果数据已经存在 则应该更新 否则创建 这是我的创建方法 def create id params company dig id if id present co
  • C# 是否有一种简单的方法可以让我替换多个 if 语句?

    我有以下代码 if testQuestion Result t testQuestion CorrectCount if testQuestion Result f testQuestion IncorrectCount if testQu
  • 结构图 - 同一接口的两个实现

    我有一个具有以下 ctor 的服务类 public class IMessageService emailService IMessageService smsService 和两个实现IMessageService 电子邮件和短信 如何配
  • 如何在 ASP.NET Core RC2 中制作 websocket 服务器?

    我使用 Microsoft AspNetCore WebSockets Server 0 1 0 rc2 final 制作 websocket 服务器 但不起作用 在rc1中 它是1 0 0 rc1 final 并且工作正常 这是我的代码
  • 如何标记一个TPL数据流周期完成?

    给定 TPL 数据流中的以下设置 var directory new DirectoryInfo C dev kortforsyningen dsm tiles var dirBroadcast new BroadcastBlock
  • 如何在 Vista 文件打开对话框中禁用通配符模式的自动附加

    我使用文件打开对话框来选择图像文件以进行进一步编辑 过滤器列表包含一个 所有支持的格式 条目 它代表一长串文件格式 由于 Vista 会自动在筛选器组合框中附加通配符模式 因此展开的组合框太宽 无法完全适应屏幕 除此之外 它看起来不太好 那
  • Android模拟器的字体可以修改吗?

    我需要更改 Android 模拟器上安装的字体 例如 我想安装 TrueType 字体 它涵盖了其他一些语言环境 如阿拉伯语 中文等 我只是想知道这可能吗 你应该覆盖 system fonts DroidSansFallback ttf使用
  • 将内容加载到 iframe 中避免内存泄漏

    我正在开发一个在 iframe 中呈现内容的嵌入式系统 它使用signalR 基于ajax 和jquery 随着时间的流逝 浏览器变得越来越慢 内存使用量也越来越高 所以我希望消除所有潜在的内存问题 当新页面加载到 iframe 中时 我附