为了提高性能,怎样动态载入JS文件
超级表格是一款多人协作的在线表格。程序相当复杂,用到十几个JS文件。
可是有些文件是在打开某些类型的表格时才须要载入。
比如,仅仅有当打开甘特图表格时,才须要载入gantetu.js文件。
那么问题来了,为了降低js文件数量和请求,怎样在须要时自己主动载入js文件呢?
办法例如以下。
//动态载入js文件
function mcss_importJS(js)
{
var oHead = document.getElementsByTagName('HEAD').item(0);
var oScript= document.createElement("script");
oScript.type = "text/javascript";
oScript.id=filename;
oScript.src=js;
oHead.appendChild( oScript);
}
假设就这样了,还不完美。由于这是动态异步载入的。超级表格程序中。在运行这种方法后立即会运行js文件里的类。
代码例如以下:
mcss_importJS(“allFile/js/gantetu.js");
var gantetu=new Gantetu();
有时候由于网络或性能原因,会报错“Gantetu对象不存在”。
我原来的处理方法是提示用户手动又一次载入。例如以下图:
这样的处理方式太LOW了。
近期我找到了解决的方法。就是自己主动又一次载入。代码例如以下:
代码解释:
假设对象为空。就在1秒后又一次载入。
最多载入5次。
效果是,基本都在自己主动载入1次后就能正常打开,并且用户基本感觉不到。
整个过程给我启示是:原来的粗暴办法持续了一年。我似乎也没办法。可是就是刚才。我花了半小时,攻克了支持了一年的bug。
假设想看真实代码,按以下步骤能够找到:
2、单击“新建》项目甘特图”
3、用Chrome或火狐浏览器的调试页面,找到main.js文件的951行代码開始。
为了提高性能,怎样动态载入JS文件的更多相关文章
- Extjs学习----------动态载入js文件(减轻浏览器的压力)
动态载入js文件能够减轻浏览器的压力,本例使用了Ext.window.Window组件,该组件的学习地址:http://blog.csdn.net/z1137730824/article/detail ...
- asp.net后台代码动态添加JS文件和css文件的引用
首先添加命名空间 using System.Web.UI.HtmlControls; 代码动态添加css文件的引用 HtmlGenericControl myCss = new HtmlGeneric ...
- 自己编写jQuery动态引入js文件插件 (jquery.import.dynamic.script)
这个插件主要是结合jquery或者xhr异步请求来使用的,它可以把已经引入过的js文件记录在浏览器内存中,当下次再引入相同的文件就忽略该文件的引入. 此插件不支持浏览器刷新保存数据,那需要利用cook ...
- 动态添加js文件.
方法一: $.getScript(url,callback); 这个方法是对$.ajax({ })的封装.默认是异步的而且是带有缓存的. 缓存对于用户来说,是个好东西,但是对于开发者来说可就是日了狗的 ...
- 动态添加JS文件到页面
/*** ** 功能: 加载外部JS文件,加载完成后执行回调函数callback ***/ var utools = { config: { id: "", url: " ...
- 动态引入Js文件
var src = "/Scripts/Test.js"; $("<script type = 'text/javascript' src='" + sr ...
- 使用Jquery promise 动态引入js文件
动态加载一个js得方式很多,如下方式: /** *一般方式加载 */ function normalLoadScript(url) { var node = document.createElemen ...
- Ajax动态载入xml文件内容
<%@page import="javax.swing.JOptionPane"%> <%@page import="com.ctl.util.*&qu ...
- 动态导入Js文件
var ScriptLoader = { worker: , isWait: false, readyQueue: [], callback: [], timer: null, wait: funct ...
随机推荐
- Halcon算子翻译——assign
名称 assign-为控制变量分配一个新的值 用法 assign( : : Input : Result) 描述 为控制变量分配一个新的值. 在全文编辑器中,只需用:=就可以进行赋值,例如: u : ...
- 服务器 : Apache Tomcat - 理解架构层次
文章概览 相信很多接触java的人都对Tom猫有着多少的熟悉,就个人而言,本来只知道Tom简单的操作与配置,就像裹上一层纱,迷迷糊糊的. Tomcat的书籍本来就不多,高分的还是很久之前的版本,直到最 ...
- python3 xpath数据获取案例
import requestsfrom retrying import retryfrom lxml import etreeimport json class DaCheng(object): de ...
- 小议webpack下的AOP式无侵入注入
说起来, 面向切面编程(AOP)自从诞生之日起,一直都是计算机科学领域十分热门的话题,但是很奇怪的是,在前端圈子里,探讨AOP的文章似乎并不是多,而且多数拘泥在给出理论,然后实现个片段的定式)难免陷入 ...
- [转载] su和sudo
转载自http://www.cnblogs.com/haichuan3000/articles/2123633.html Mandriva 说也奇怪,用root登录的用户比一般用户还难用,当初用FC6 ...
- [转载] 谷歌技术"三宝"之BigTable
转载自http://blog.csdn.net/opennaive/article/details/7532589 2006年的OSDI有两篇google的论文,分别是BigTable和Chubby. ...
- [转载] Hadoop和Hive单机环境搭建
转载自http://blog.csdn.net/yfkiss/article/details/7715476和http://blog.csdn.net/yfkiss/article/details/7 ...
- 浅谈Verilog HDL代码编写风格
消失了好久,没有写文章,也没有做笔记,因为最近再赶一个比赛,时间很紧,昨天周六终于结束了,所以趁着周末这会儿有时间,写点东西,记录下来.首先我学习FPGA才一年多,我知道自己没有资格谈论一些比较深层次 ...
- [Egret]长按图片分享、分享图片、本地存储
egret 分享有API可以把一个显示对象树渲染成一个位图纹理,我把它赋值给 HTML 的 Image 元素,就实现了图片的显示,在微信中,通过长按图片可以分享出去.当然在其他浏览器可以保存在本地. ...
- java如何声明一个数组用来存储随机生成的字母并且保证不重复
p.p1 { margin: 0.0px 0.0px 0.0px 0.0px; font: 13.0px Monaco } p.p2 { margin: 0.0px 0.0px 0.0px 0.0px ...