在网上找了例子,说是document.addEventListener("DOMContentLoaded", init, false);是在页面加载前执行的方法,但是我再页面js里面使用了3个方法,分别是:
document.addEventListener("DOMContentLoaded", function () { alert("1"); }, false);
$(function () { alert("2"); });
$(document).ready(function () {alert("3");});
可弹出来的框为什么会是:2-->3-->1
而且load事件和onready的执行先后顺序的也 查了下,说是:ready事件先于load事件被激活,在加上addEventListener事件,那应该加载的顺序是:1-->3-->2的啊,可为什么会是2-->3-->1呢???求指导
可以具体点么?
追答事件监听的流程如下:
注册事件→(事件未发生时)继续执行其他代码→事件发生→执行事件关联的操作
你的js流程如下
注册DOMContentLoaded事件→文档内容未全部载入(事件未发生)→执行第二行、第三行→事件发生
注:DOMContentLoaded事件是页面文档完全加载完毕并解析完毕之后才触发的,而不是DOM一加载就触发
另:要在页面主体内容加载前运行脚本,直接用js阻塞页面载入就行了
不对,我需要的效果是页面加载前执行js函数,是页面里面的任何元素都没有加载前执行js函数,包括引用的外部js、css等这个js函数要再这些之前执行,因为我需要实现一个页面缓冲效果,也就是页面图片、内容等等所有的东西都没有加载完成之前一直显示这个效果,并且提示"内容正在加载中。。。。",如果全部加载完成了,那就显示页面。否则就不显示页面
追答同样是用js阻塞
在页首添加一个div或a作为遮盖层
将其设置为最顶层遮盖文档其余层
然后监听页面载入事件
等页面完全载入后隐藏或删除遮盖层
具体实现,搜“页面加载 效果|特效”有很多
document.addEventListener("DOMContentLoaded", init, false);
没有错啊,是document.addEventListener啊,难道参数不是DOMContentLoaded??
不是。。我是说你那句话的意思应该是addEventListener这个事件注册的方法执行的早,
但并不是指这个事件的触发会早