在安卓环境中,通常情况下需要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
层叠上下文,英文称作”stacking context”. 是HTML中的一个三维的概念。如果一个元素含有层叠上下文,我们可以理解为这个元素在z轴上就“高人一等”。z轴通常指用户眼睛到屏幕的一条直线。所有的元素都有层叠顺序。
首先,我们创建一个div框。
当我们试着去改变background: black,我们会发现由于背景颜色盖在边框之上,边框的颜色会有所改变。
我们试着给这个div中加个内联元素,会发现,内联元素比那个没有因为背景是黑色,而隐藏掉。
内联元素是在background之上的,所以不会被背景色覆盖掉。
接着,我们在div中再创建一个内联元素
我们会发现,子元素的背景色覆盖掉了父元素的背景色。然后,我们给子元素加个margin-top,子元素中的内联元素会将父元素中的文字覆盖掉。
我们继续添加一个浮动元素,同时稍微修改下子元素的样式,方便我们观察。
给float元素加一个margin,我们可以看到,蓝色的float元素,覆盖在div之上。
我们继续添加两个div元素
此时,我们可以看到,后出现的元素会覆盖在先出现的元素之上,但是,浮动元素仍然在顶端。
我们给两个元素都加上position。
这时,两个div都在float元素的上层。后出现的橙色元素暂时在最上面。
我们接着给.relative1加上一个z-index
此时.relative1就在最上层。但是我们给.child加上z-index并没有效果,因为要给定位元素加上z-index(不为auto)才能触发堆叠上下文。
总结下来就是下图所示(原谅我盗图):
jsp中是先编译“java代码”为静态代码,之后从代码第一行开始一直扫描到到代码最后一行;jsp是可以动态加载的,也就是说jsp变更不需要重启项目,如果里面有java代码的话,加载jsp的时候先编译java代码,如果有错误,直接抛出错误,不继续运行。
如果没错误的话,扫描出body中的代码显示到页面,之后再加载js。