2. js在jsp中的加载顺序
页面上的js代码时html代码的一部分,所以页面加载的时候是由上而下加载。所以js加载的顺序也就是页面中<script>标签出 现的顺序。<script>标签里面的或者是引入的外部js文件的执行顺序都是其语句出现的顺序,其中js执行的过程也是页面装载的一部分。
2.1 在js脚本中定义的全局变量和函数,都可以在后面的脚本中调用。变量的调用,必须是前面已经声明了的,否则变量返回的值是undefined。同一段脚本中,函数定义可以出现在函数的调用后面;若函数的定义和调用在两个脚本段中,函数调用在函数定义之前就会报函数未定义错误。
2.2 js中出现ajax的异步加载
由于ajax的异步加载可能会导致语句的执行顺序并不是按照语句的出现顺序来执行。下面以我做任务时遇到的问题为例:
在页面初始加载的时候需要向jsp发送请求来获得该页面所需的数据,在ajax成功函数中,对data的操作所需时间过长,就会导致在ajax函数 外面的confirm与loadTree比data操作后面的语句先执行。最终在loadTree中使用data的值得时候就为空,此时全局变量 openTab_Id就为空。
2.3控制js执行顺序
一、使用时机不同
1、onload:当用户进入页面时就会触发。
2、document.ready:是当DOM载入就绪可以查询及操纵时绑定一个要执行的函数。
二、作用不同
1、onload:事件常用来检测访问者的浏览器类型和版本,然后根据这些信息载入特定版本的网页。
2、document.ready:是对向window.load事件注册事件的替代方法。通过使用这个方法,可以在DOM载入就绪能够读取并操纵时立即调用所绑定的函数。
三、作用不同
1、onload:常被用来处理用户进入或离开页面时所建立的 cookies。
2、document.ready:是事件模块中最重要的一个函数,因为它可以极大地提高web应用程序的响应速度。
参考资料来源:百度百科-Javascript 事件
参考资料来源:百度百科-ready(fn)
js 有时加载有时不加载是设置错误造成的,解决方法为:
1、Script DOM Element方法代码。
2、<async>属性是HTML5中新增的异步支持,此方法被称为Script DOM Element 方法。但是这种加载方式执行完之前会阻止onload事件的触发,而现在很多页面的代码都在onload时还执行额外的渲染工作,所以还是会阻塞部分页面的初始化处理。
3、获取XMLHttpRequest对象代码,考虑到兼容性。
4、采用Http请求get方式open()方法的第三个参数表示采用异步(true)还是同步(false)处理代码。
5、XHR Eval:与XHR Injection对responseText的执行方式不同,直接把responseText放在eval()()函数里面执行。获取XMLHttpRequest对象,考虑兼容性。