在安卓环境中,通常情况下需要html页面解析完成后才会让5+ API生效,安卓的执行的顺序为:
1. 加载html页面,loading
2. 解析html页面(解析title节点、下载script/link等节点引用的资源,如js/css文件)
3. 触发DOMContentLoaded事件
4. 触发plusready事件
此文对执行顺序有详细描述:http://ask.dcloud.net.cn/article/571
我们总是在不停追求性能优化,生效时间越早,我们可以把app的体验做的更好。
在HBuilder7.5版本之后安卓版支持提前注入5+ API,可以在plusready事件触发之前调用5+ API,操作方法是在页面中添加以下节点:
<script src="html5plus://ready"></script>,示例如下:
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8"/>
<meta name="viewport" content="width=device-width,initial-scale=1.0,maximum-scale=1.0,user-scalable=no"/>
<title>HTML5+ API</title>
<script src="html5plus://ready"></script>
<script type="text/javascript" charset="utf-8">
// 这里可以调用5+ API了,为了更好的兼容性,应该使用以下代码进行判断
if(window.plus){
// 在这里调用5+ API
}else{// 兼容老版本的plusready事件
document.addEventListener('plusready',function () {
// 在这里调用5+ API
},false)
}
</script>
</head>
<body>
Hello HTML5 plus
CSS不能指定图片加载顺序,应该问的JS指定图片加载顺序。
javascript监听一个图片是否加载完毕 如果加载完成再加载下一张,不是一次性从服务器加载 减少服务器压力,
可用到的地方:比如制作类似google地图的应用,可以使小图一张一张的加载。
function Load_pic(arr){ //这里接受的图片的所以链接数组。this.loop_f=function(i,o_file,len,f,obj){
if(i<len-1){
i=i+1
f(i,o_file,len,obj)
}
}
this.creat_pic=function(i,o_file,len,obj){
var f=arguments.callee,
doc=document,
image = doc.createElement("img")
image.src =o_file[i]
i<len?doc.getElementsByTagName("body")[0].appendChild(image):''
if(navigator.userAgent.indexOf("MSIE")>0){ //是IE浏览器
if($.browser.version==6.0 || $.browser.version==9.0){ //IE兼容处理。
image.onreadystatechange = function () {
if (image.readyState == "complete"){ //image 加载完后,函数回调。
obj.loop_f(i,o_file,len,f,obj)
}
}
}else{ //非IE7和IE9的IE浏览器。
ie7imagetime = window.setInterval(function(){
var rs = image.readyState
if(rs=="complete"){
window.clearInterval(ie7imagetime)
obj.loop_f(i,o_file,len,f,obj)
}else{
return
}
},200)
}
}else{ //非IE浏览器,直接用onload事件
image.onload = function () {
if (image.complete == true){
obj.loop_f(i,o_file,len,f,obj)
}
}
}
}
if(arr.constructor===Array){ //函数开始执行的地方。
var len=arr.length,
i=0
i<len?this.creat_pic(i,arr,len,this):''
}
}