`
lixinlixin2008
  • 浏览: 153454 次
  • 性别: 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 EasyUI DataGrid动态加载数据

    在实际应用中,动态加载数据是DataGrid的一个重要特性,允许用户在需要时加载更多的数据,提高网页性能并优化用户体验。 动态加载数据通常指的是懒加载(Lazy Loading)机制,即只在用户滚动到数据视图的底部或者...

    动态给head添加script

    在网页开发中,有时我们需要在页面加载过程中动态地向`&lt;head&gt;`标签内添加`&lt;script&gt;`元素,以便实现异步加载脚本、延迟加载或按需加载等功能。这种技术对于优化网页性能、减少首屏加载时间以及提高用户体验至关重要。...

    Echarts通过Ajax实现动态数据加载

    ### Echarts通过Ajax实现动态数据加载 #### 一、引言 在现代Web开发中,数据可视化是一项重要的技能。Echarts作为一款强大的JavaScript图表库,因其丰富的图表类型、灵活的配置选项以及良好的交互性而备受开发者...

    下拉框选择事件动态加载echart数据

    在本文中,我们将深入探讨如何在用户选择下拉框选项时动态加载ECharts图表的数据。ECharts是一款由百度开发的开源JavaScript数据可视化库,它提供了丰富的图表类型,强大的交互功能,以及灵活的数据接入方式,使得在...

    动态script标签技术结合JSON数据交换格式解决Ajax的跨域问题

    本文提出了一种替代方案——使用动态script标签加载JSON格式的数据,这种方式不仅能够绕过浏览器的安全限制,还无需在本地服务器上部署任何组件。 #### 关键词 - Ajax - JSON - 动态script标签 - 跨域 #### 引言 ...

    vue动态加载外部依赖js代码实现

    - 在浏览器环境中,可以通过创建`&lt;script&gt;`标签并动态插入DOM中来加载外部JS文件。 - 为了更好地控制加载过程并在文件加载完成后执行回调函数,通常会监听`script`标签的`onload`事件。 3. **组件内部结构解析** ...

    jQuery动态加载json数据.docx

    总结来说,这个示例展示了如何利用jQuery、HTML5、CSS和JSON实现数据动态加载。通过这种方式,开发者可以创建更加动态和交互的Web应用,提升用户体验,同时降低服务器负载,因为数据只在需要时才被请求和加载。理解...

    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:基础折线图(含异步加载数据)

    异步加载数据可以提高页面加载速度,特别是处理大量数据时,也可以实现动态更新图表,让图表实时反映后台数据的变化。 总结来说,ECharts的基础折线图是通过定义配置项和数据来创建的,而异步加载数据则可以通过...

    动态创建iframe,并动态添加js执行代码

    在IT行业中,动态创建iframe和动态添加JavaScript代码是一种常见的技术,尤其在页面加载后需要异步加载内容或者实现跨域通信时。以下是对这个主题的详细讲解。 首先,`iframe`(Inline Frame)是HTML中的一种元素,...

    jQuery实现动态更改table表格数据

    本教程将深入探讨如何使用jQuery实现动态更改table表格数据,让你的网页表格具有实时编辑功能,提升用户体验。 首先,我们需要理解HTML表格的基本结构。一个基本的表格由`&lt;table&gt;`元素开始,包含若干个`&lt;tr&gt;`(行)...

    echarts 动态获取数据

    在动态获取数据的场景下,ECharts 可以与后端数据库进行交互,获取实时或按需的数据,然后根据这些数据更新图表内容。以下是关于如何实现这个过程的详细说明: 1. **数据库查询**: 在服务器端,你可以使用各种...

    Python代码源码-实操案例-框架案例-如何肥取网页中动态加载的数据….zip

    在现代网页设计中,许多网站为了提升用户体验,会使用JavaScript等技术进行动态加载,使得数据在用户滚动页面或触发特定事件时才逐步呈现。这样的设计虽然优化了网页加载速度,但也给传统网络爬虫带来了挑战,因为...

    动态添加/删除表格行并提交内容到后台

    在开发Web应用时,动态添加和删除表格行是常见的需求,尤其在数据管理或表单填写场景中。本文将深入探讨如何使用C#后端和JavaScript前端技术来实现这一功能,为初学者提供一个基础的实践指导。 首先,我们要了解...

    javascript函数动态加载javascript文件

    动态加载JavaScript文件的基本原理是利用`&lt;script&gt;`标签的异步加载特性或者使用`XMLHttpRequest`或`fetch` API来创建HTTP请求获取JS文件。下面我们将深入探讨这两种方法: 1. **使用`&lt;script&gt;`标签**: 在HTML中,...

    C#用ScriptControl动态执行JS和VBS脚本

    这通常发生在需要动态计算、解析HTML、处理数据或模拟浏览器环境时。`System.Web.Extensions`命名空间中的`ScriptControl`类为这种需求提供了支持。本文将深入探讨如何使用C#通过`ScriptControl`类来动态执行...

    Echart数据动态更新

    在本案例中,我们将探讨如何利用ECharts与AJAX技术相结合,实现从后台数据库动态获取数据并更新曲线图。 首先,了解ECharts的基本用法是至关重要的。ECharts图表的创建通常包含以下步骤: 1. **引入ECharts库**:...

    SAP SCRIPTFORM 学习例子

    最后,`SAP SCRIPT FORM.doc`很可能是一个基础教程,涵盖了Scriptform的基本概念和创建过程,包括如何定义形式、添加元素、设置布局以及调用函数模块等。 总的来说,这个学习例子将带你逐步了解SAP Scriptform的...

    php+mysql+jquery.more.js下拉加载带sql数据完整流程带mysql测试数据

    总的来说,这个项目展示了如何将前端交互(jQuery的下拉加载功能)与后端处理(PHP和MySQL)相结合,实现动态加载数据的效果。理解这个过程对于Web开发者来说是非常重要的,因为它涉及到前后端的通信、数据库操作和...

    网络爬虫-爬取网页动态加载的数据-实现定时爬取网页内容.zip

    在压缩包中,"网络爬虫-如何爬取网页中动态加载的数据-Python实例源码.zip"包含了使用Selenium爬取动态加载网页的示例代码,你可以学习如何初始化WebDriver,如何等待页面元素加载完成,以及如何获取动态生成的内容...

Global site tag (gtag.js) - Google Analytics