如何实现JavaScript动态加载CSS和JS文件

html-css06

如何实现JavaScript动态加载CSS和JS文件,第1张

动态加载外部css样式及css样式,参考代码如下:

// 动态加载外部js文件

var flag = true

if( flag ){

loadScript( "js/index.js" )

}

function loadScript( url ){

var script = document.createElement( "script" )

script.type = "type/javascipt"

script.src = url

document.getElementsByTagName( "head" )[0].appendChild( script )

}

// 动态加载js

if( flag ){

var script = document.createElement( "script" )

script.type = "text/javascript"

script.text = " "

document.getElementsByTagName( "head" )[0].appendChild( script )

}

// 动态加载外部css样式

if( flag ){

loadCss( "css/base.css" )

}

function loadCss( url ){

var link = document.createElement( "link" )

link.type = "text/css"

link.rel = "stylesheet"

link.href = url

document.getElementsByTagName( "head" )[0].appendChild( link )

}

// 动态加载css样式

if( flag ){

var style = document.createElement( "style" )

style.type = "text/css"

document.getElementsByTagName( "head" )[0].appendChild( style )

var sheet = document.styleSheets[0]

insertRules( sheet,"#gaga1","background:#f00",0 )

}

function insertRules( sheet,selectorTxt,cssTxt,position ){

if( sheet.insertRule ){ // 判断非IE浏览器

sheet.insertRule( selectorTxt + "{" + cssTxt +"}" ,position )

}else if( sheet.addRule ){ //判断是否是IE浏览器

sheet.addRule( selectorTxt ,cssTxt ,position )

}

}

提高网站页面的加载速度的方法其实有很多,那本文主要从下面四个角度进行讨论,分享常用的提高网页加载速度的技巧:

一、网页压缩技术

对于网页压缩而言,相信各位站长都比较熟悉,主要是启用服务器Gzip,对页面Gzip压缩,减少元素的体积,从而减少数据的传输,进而提高网页的加载速度。

二、Css优化

(1)css位置

CSS说明如果出现在<body>后,页面需要重新渲染,打开速度受到影响。所有css定义代码的位置要放到网站<body>之前。

(2)css sprite技术

网站上的一些图片可以采用css sprite技术进行合并,减少加载请求次数,从而提高网页的加载速度。

(3)css代码优化

通过对css代码属性的简写、移除多余的结构(frameworks)和重设(resets)等一系列的方法和技巧来简化css代码,减小css文件的大小。

三、JS优化

(1)JS位置

网页代码中对js进行优化的时候,建议将JS放在页面最后,这样可以加快页面打开速度。

(2)合并JS

合并相同域名下的js,通过减少网络连接次数从而提高网页的打开速度。

(3)LazyLoad(延迟加载)技术

Lazy Load是一个用JavaScript 编写的 jQuery 插件,它可以延迟加载长页面中的图片。在浏览器可视区域外的图片不会被载入,直到用户将页面滚动到它们所在的位置。

四、缓存静态资源

通过设置浏览器缓存,将css、js等不太经常更新的文件缓存在浏览器端,这样同一访客再次访问你的网站的时候,浏览器就可以从浏览器的缓存中获取css、js等,而不必每次都从服务器读取,这样在一定程度上加快了网站的打开速度,又可以节约服务器流量。

首先,不同的页面之间再怎么平滑,也无法避免浏览器在载入新页面时必然产生的一个刷新动作,这是无法避免的,毕竟这是浏览器,不是app;

其次,即使上述你觉得不是问题,但css本身不是程序,它不可能知道页面之间的切换行为,因此用纯css肯定是无法实现的,必须结合js才行。

一个比较有可能实现的方案就是:通过js在前一个页面的unload事件中把页面逐渐过渡到全白,在后一个页面的load事件中把页面从全白过渡到完全显示。

不过我觉得这简直是舍本逐末啊,还是先把页面的内容搞好把,这些花架子还是少弄为佳。你也不想想为啥其他大网站都没有这样的效果,难道就只有你一个人想到了吗?