javascript基础学习JavaScript学习笔记

JavaScript 的性能优化:加载和执行

2017-01-09  本文已影响51人  跨境工具箱

着 Web2.0 技术的不断推广,越来越多的应用使用javascript技术在客户端进行处理,从而使 JavaScript 在浏览器中的性能成为开发者所面临的最重要的可用性问题。而这个问题又因 JavaScript 的阻塞特性变的复杂,也就是说当浏览器在执行 JavaScript 代码时,不能同时做其他任何事情。

使用动态创建的元素来下载并执行代码;

使用 XHR 对象下载 JavaScript 代码并注入页面中。

通过以上策略,可以在很大程度上提高那些需要使用大量 JavaScript 的 Web 网站和应用的实际性能。

原文来自:https://www.ibm.com/developerworks/cn/web/1308_caiys_jsload/

补充几个平时自己在用的函数

function loadJs(url, callback, charset) {

var head = document.getElementsByTagName("head")[0];

var script = document.createElement("script");    if ( !!charset) script.charset = "utf-8";

script.src = url;

script.onload = script.onreadystatechange = function() {

var f = script.readyState;        if (f && f != "loaded" && f != "complete") return;

script.onload = script.onreadystatechange = null;

head.removeChild(script) if (callback) {

callback() || callback

};

};

head.appendChild(script);

}

// js同步加载

function getScripts(i, linkArray, fn) {

env || getEnv();

var script = document.createElement('script');

script.type = 'text/javascript';

script.src = linkArray[i];

var head = document.head || document.getElementsByTagName('head')[0];

head.appendChild(script);    if (env.ie && 'onreadystatechange' in script && !('draggable' in script)){ //ie浏览器使用以下方式加载

script.onreadystatechange = function () {          if (/loaded|complete/.test(script.readyState)) {

script.onreadystatechange = null;            if(i === linkArray.length-1) {                if (fn) {

fn();

}

} else {

getScripts(++i, linkArray, fn);

}

}

};

}else{

script.onload = function() {            if(i === linkArray.length-1) {                if (fn) {

fn();

}

} else {

getScripts(++i, linkArray, fn);

}

};

}

}

// js存在依赖关系 依次加载

getScripts(0, [    'http://caibaojian.com/demo/base.js',    'http://caibaojian.com/demo/reset.js'], function() {

alert('callback');

});

原文链接:http://www.kubiji.cn/juhe-id5905.html

上一篇 下一篇

猜你喜欢

热点阅读