`
lixinlixin2008
  • 浏览: 150080 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

动态script加载数据

阅读更多
Neil Fraser文章看得糊里糊涂,e文不是很好...

一般我们加载数据会生成一个script标签,在onload事件里remove掉,或者在jsonp回调函数中remove掉script标签,取得数据

这样其实script占用的内存并没有释放,必须:
for (var prop in jsFile) {
delete jsFile[prop];
}


ie下不能delete native对象的属性,Neil Fraser给出的解决方法是,ie下只用一个script标签...


原文地址:http://neil.fraser.name/news/2009/07/27/

网名: 天堂左我往右
分享到:
评论
6 楼 clone168 2009-09-07  
<div class="quote_title">lixinlixin2008 写道</div>
<div class="quote_div">
<div class="quote_title">bencode 写道</div>
<div class="quote_div">jquery里是这样的<br><br><pre name="code" class="javascript">window[ jsonp ] = function(tmp){
  data = tmp;
  success();
  complete();
  // Garbage collect
  window[ jsonp ] = undefined;
  try{ delete window[ jsonp ]; } catch(e){}
  if ( head )
    head.removeChild( script );
  };
</pre>
<br><br>好像没有对IE作专门处理或优化。而是避过<br>不知道在IE下是否真的会泄露, 还是共用一个节点吧。<br><br><br>这篇也是讲这个, 同一楼主?<br>http://www.iteye.com/topic/459090<br><br>
</div>
<br><br>据Neil Fraser所说,是所有浏览器都会有问题,不单是IE,俺们公司的加载json的库也是script用过即remove,3年了也没出过问题,也许内存泄漏是很轻微的...</div>
<p><span style="font-size: small;">其实最好的方式是remove后在null掉对象,不妨看看我的博客:</span><span style="font-family: Arial; color: #de4263; line-height: 20px;"><a class="quote_div" style="color: #8f6fb0; line-height: 20px !important;" href="http://hi.baidu.com/hulk168/blog/item/3e55488f07ddf8f3513d92f7.html" target="_blank"><span style="font-size: small;">再次探讨内存泄露</span></a></span></p>
<p> </p>
5 楼 lixinlixin2008 2009-09-06  
bencode 写道
jquery里是这样的

window[ jsonp ] = function(tmp){
  data = tmp;
  success();
  complete();
  // Garbage collect
  window[ jsonp ] = undefined;
  try{ delete window[ jsonp ]; } catch(e){}
  if ( head )
    head.removeChild( script );
  };


好像没有对IE作专门处理或优化。而是避过
不知道在IE下是否真的会泄露, 还是共用一个节点吧。


这篇也是讲这个, 同一楼主?
http://www.iteye.com/topic/459090



据Neil Fraser所说,是所有浏览器都会有问题,不单是IE,俺们公司的加载json的库也是script用过即remove,3年了也没出过问题,也许内存泄漏是很轻微的...
4 楼 clone168 2009-09-03  
<div class="quote_title">bencode 写道</div>
<div class="quote_div">jquery里是这样的<br><br><pre name="code" class="javascript">window[ jsonp ] = function(tmp){
  data = tmp;
  success();
  complete();
  // Garbage collect
  window[ jsonp ] = undefined;
  try{ delete window[ jsonp ]; } catch(e){}
  if ( head )
    head.removeChild( script );
  };
</pre>
<br><br>好像没有对IE作专门处理或优化。而是避过<br>不知道在IE下是否真的会泄露, 还是共用一个节点吧。<br><br><br>这篇也是讲这个, 同一楼主?<br>http://www.iteye.com/topic/459090<br><br>
</div>
<p><a href="http://www.iteye.com/topic/459090">http://www.iteye.com/topic/459090</a>这篇里面的回帖的代码可以看看</p>
<p>至于delete到底有没有效果,我现在还是持怀疑态度,我做过测试,发现delete并没有起到实际的作用</p>
<p> </p>
3 楼 clone168 2009-09-03  
<div class="quote_title">bencode 写道</div>
<div class="quote_div">jquery里是这样的<br><br><pre name="code" class="javascript">window[ jsonp ] = function(tmp){
  data = tmp;
  success();
  complete();
  // Garbage collect
  window[ jsonp ] = undefined;
  try{ delete window[ jsonp ]; } catch(e){}
  if ( head )
    head.removeChild( script );
  };
</pre>
<br><br>好像没有对IE作专门处理或优化。而是避过<br>不知道在IE下是否真的会泄露, 还是共用一个节点吧。<br><br><br>这篇也是讲这个, 同一楼主?<br>http://www.iteye.com/topic/459090<br><br>
</div>
<p>不是,我的帖子发表时间早于楼主的这篇,不过里面的谈到的那个老外是一个人~</p>
<p> </p>
2 楼 bencode 2009-09-03  
jquery里是这样的

window[ jsonp ] = function(tmp){
  data = tmp;
  success();
  complete();
  // Garbage collect
  window[ jsonp ] = undefined;
  try{ delete window[ jsonp ]; } catch(e){}
  if ( head )
    head.removeChild( script );
  };


好像没有对IE作专门处理或优化。而是避过
不知道在IE下是否真的会泄露, 还是共用一个节点吧。


这篇也是讲这个, 同一楼主?
http://www.iteye.com/topic/459090

1 楼 clone168 2009-09-03  
<div class="quote_title">lixinlixin2008 写道</div>
<div class="quote_div">Neil Fraser文章看得糊里糊涂,e文不是很好... <br><br>一般我们加载数据会生成一个script标签,在onload事件里remove掉,或者在jsonp回调函数中remove掉script标签,取得数据 <br><br>这样其实script占用的内存并没有释放,必须: <br>for (var prop in jsFile) { <br>delete jsFile[prop]; <br>} <br>......<br>
</div>
<p>我觉得楼主其实应该去测试一下,看作者的观点是不是正确的,我在另外一个帖子里面已经对Neil Fraser的观点提出质疑了:<a href="/topic/459090" target="_blank">http://www.iteye.com/topic/459090</a></p>
<p> </p>

相关推荐

    JS中利用localStorage防止页面动态添加数据刷新后数据丢失

    非常不多说了,直接给大家贴代码了,具体代码如下所示: &lt;!...&lt;... &lt;head&gt;...meta charset="UTF-8" /&gt;...meta name="viewport" content="width=...script src="https://cdn.bootcss.com/jquery/3.1.1/jquery.min

    echarts的最新版本2.2.7在asp.net中加载数据呈现

    // Step:3 为模块加载器配置echarts的路径,从当前页面链接到echarts.js,定义所需图表路径 require.config({ paths: { echarts: 'echarts-2.2.7/doc/example/www/js' } }); 这个插件最主要就是用这些东西了 ...

    javascript为下拉列表动态添加数据项

    javascript为下拉列表添加数据项.html 代码如下: &lt;!... &lt;head&gt;...为下拉列表动态添加数据项&lt;/title&gt; [removed] function gel(id) { return document.getElementById(id); } [removed]

    javascript操作向表格中动态加载数据

    本文实例为大家分享了javascript实现向表格中动态加载数据的具体代码,供大家参考,具体内容如下 首先在HTML中编写表格信息 //表格头部信息 编号 姓名 身份 操作 //表格内容信息 &lt;tbody id=tbBody&gt;...

    AppleScript初学者

    AppleScript初学者关于AppleScript:AppleScript很简单──保证比VB还简单,但很实用!学起来很轻松!学会之后你会发现你节约了很多时间,摆脱了很多机械性的无聊琐事。 关于创作目的:国内目前有关AppleScript的...

    javascript动态创建表格及添加数据实例详解

    本文实例讲述了javascript动态创建表格及添加数据的方法。分享给大家供大家参考。具体分析如下: 1. 动态创建表格(代码不兼容IE6) &lt;html xmlns="http://www.w3.org/1999/xhtml"&gt; &lt;head&gt; &lt;meta ...

    javascript动态添加表格数据行(ASP后台数据库保存例子)

    本文,我将以一个类似的例子来做一个前台用Javascript动态添加数据项,后台保存到数据库的例子。 浏览器:IE.6.0 后台:ASP (VBScript ) 前台:HTML + JavaScript HTML代码: 代码如下: [removed][removed] &lt;...

    asp+jsp+JavaScript动态实现添加数据行

    首先,动态添加表格是要在前台实现的,当然后台也可以,不过可能要用到ajax,很麻烦,所以最好采用javascript来实现,下面来介绍动态添加表格行的两种方式: 第一种:源码 [removed] &lt;script type=text/java

    AppleScript 简明基础教程

    第七节 添加注释和括号! 第八节 代码缩写! 第四章 读懂AppleScript字典! 第一节 打开特定应用程序的AppleScript字典! 第二节 读懂AppleScript字典! 第五章 变量和属性! ! Nathan编著 3  第一节 变量的概念! ...

    js 加载aspx页面

    &lt;script language="javavascript"src="a.aspx"&gt;&lt;/script&gt; 方式加载aspx页面框 该demo有点事 可以动态编辑返回的html,以及返回JSON数据,js动态加载数据

    nativescript-loading-indicator, 带有NativeScript选项的进度/加载指示器 iOS Android.zip

    nativescript-loading-indicator, 带有NativeScript选项的进度/加载指示器 iOS Android nativescript-loading-indicatornativescript-loading-indicator 是NativeScript的一个插件,它覆盖了当前页面上的加载指示器...

    动态给fastreport报表中的变量赋值

    动态给fastreport报表中的变量赋值(因论坛中有人提过这问题)!

    用ASP.NET读取读取EXCEL中的数据到WEB页面

    用ASP.NET读取读取EXCEL中的数据到WEB页面 内含全部的项目代码和说明

    javascript动态添加table

    本文档详细描述了,动态生成行,列与行列同时生成的过程.文档中对代码进行了详细的说明! 下载就能用的代码!

    JS验证页面form表单数据,齐全

    在form表单上添加一个提交事件调用验证数据方法 (this,3);"&gt; 请输入正确的手机号!" requiremsg="移动电话不能为空!"/&gt; require指不能为空(true表示不允许为空),dataType指数据类型(Mobile表示是手机...

    Excel Macro to Generate Database Insert Script.zip

    对于开发人员来说,一次在数据库中添加/编辑主数据或静态数据一直很麻烦,因为它需要为每个小的文本更改集编写脚本。 对于不了解SQL Server的用户,在Excel中进行这些更改很容易。 例如,您的业务分析师或客户为您...

    Windows Script Host 2脚本开发人员指南PDF+源码

    )接收运行时的错误消息后,我会到记事本中加载的脚本,一次又一次,行计数手动找到故障线路,并尝试使用试验和错误的方法来修改代码。几个小时后,我决定,这种做法不可能是正确的方式做脚本编程。 一旦我开始访问...

    backbone-pegasus:加载 Backbone 时加载模型和集合数据

    使用backbone-pegasus,你可以在加载Backbone 和其他脚本的同时开始加载数据。 给我看看 显然,在生产中你应该连接你的应用程序脚本。 但是,此屏幕截图中重要的是正在加载数据(黄色条): 一旦backbone-...

    ASP之处理用Javascript动态添加的表单元素数据的代码

    上一篇文章讲到了动态添加表单元素,这次我们来讲讲怎么样来处理这些动态添加的表单元素传过来的数据! 怎么样动态添加表单元素,我这里就不细说了!不明白的看看上一篇文章//www.jb51.net/html/200711/23/12856.htm下面...

    js 读取 添加 删除 修改 Access数据库 完整例子

    ---------js 读取 添加 删除 修改 Access数据库 完整例子 ---------

Global site tag (gtag.js) - Google Analytics