`

Web前端开发-给程序一个统一入口--window.onload和DOMReady

 
阅读更多

       JavaScript是一种脚本语言,浏览器下载到哪就会执行到哪,这种特性会为编程带来方便,但也容易让程序过于零散,为此我们从功能上将程序进行职能划分,我们把划分出来的应用部分组织起来,给他们一个统一的‘入口’,方便修改、添加功能的时候直接找到他。

<div>
    xxxxx
</div>
<script type='text/JavaScript'>
    xxxxx
</script>
<script type='text/JavaScript'>
function init(){
//功能A
(function (){})()
//功能B
(function (){})()
//功能C
(function (){})()
}
</script>
<div>
    xxxxx
</div>

      

       接下来就可以调用入口函数,完成页面的初始化。如果程序控制某个DOM节点,但是这个节点还没有被载入,程序就会报错,如下代码。

<script type='text/JavaScript'>
alert(document.getElementById('test').innerHTML);
</script>
<div id='test'>hello world</div>

     

      为了解决这个问题,我们可以把脚本移到后面,但是我们希望程序能够无视其位置,无视是否在相应的DOM节点之后。我么可以监听window的onload事件,当window触发onload事件后调用脚本。

<script type='text/JavaScript'>
function init(){
    alert(document.getElementById('test').innerHTML);
}
window.onload=init;
</script>
<div id='test'>hello world</div>

 

       在网页制作过程中,window的onload事件要求网页所有元素加载后才会触发,这样会给网页带来巨大的延迟,这是使用者所不能接受的。为了解决这个问题,很多Js框架提供了DOMReady事件代替window.onload事件,DOMReady只判断页面内所有的DOM节点是否完全生成,所以比window.onload更快。如果不使用任何Js框架,也可以模DOMReady事件,但是由于触发原理不同、不同浏览器原理还不同,我们可以绕开DOMReady事件以一种简单方式达到功能。

<script type='text/JavaScript'>
function init(){
    alert(document.getElementById('test').innerHTML);
}
</script>
<div id='test'>hello world</div>
.........
<script type='text/JavaScript'>
init();
</script>
</boday>

 

       实际工作中,网站的头部和尾部通常会做成单独文件,用服务器端语言include到网页中,一般来说,头尾文件比较稳定,全站统一,不会经常改动,但是主体部分文件各不相同,可能由多个工程师完成,其中有的页面可能不需要用Js写应用,主体部分不需要init函数,但是JS框架会在</body>前调用init函数,此时会报错,一个简单的处理方式便是在调用init函数前判断页面内是否已经定义了init函数,定义了才去执行。

<div class='foot'>
    ....
</div>
<script type='text/JavaScript'>
    if(init){
        init();
}
</script>

 

分享到:
评论

相关推荐

    脱离document.onload和window.onload的onload事件

    脱离document.onload和window.onload的onload事件,可多次添加加载事件!

    Web前端开发工程师笔试题及答案

    腾迅Web前端开发工程师笔试题及答案 1 请实现,鼠标点击页面中的任意标签,alert该标签的名称.(注意兼容性) function elementName(evt){ evt = evt|| window.event; // IE: window.event // IE用srcElement获取...

    window.onload

    window.onload insertAfter()

    编写高质量代码-Web前端开发修炼之道.azw3

    5.1.2 给程序一个统一的入口——window.onload和DOMReady 5.1.3 CSS放在页头,JavaScript放在页尾 5.1.4 引入编译的概念——文件压缩 5.2 JavaScript的分层概念和JavaScript库 5.2.1 JavaScript如何分层 5.2.2...

    前端项目-buy-button-js.zip

    前端项目-buy-button-js,js是一个高度可定制的UI库,用于向任何网站添加电子商务功能。

    ie中 body onload 和 window onload 解决法案

    有需要的朋友是最好的参考资料。希望有所帮助!

    window.addEventListener来解决让一个js事件执行多个函数

    可能你也碰到过这种情况,就是在js的... 下面是一个解决方法。至于attachEvent和addEventListener的用法,可以自己Google或百度一下。 代码如下: if (document.all){ window.attachEvent(‘onload’,函数名)//IE中 } els

    Selenium处理弹出窗口.docx

     2.Selenium RC中开启proxy injection(PI)模式也可以识别,这种模式提供了一个HTTP代理在浏览器之前自动更改所有接收到的HTML。window.alert, window.confirm,window.prompt在文件selenium-browserbot.js函数...

    js 某个页面监听事件渲染完毕的时间.pdf

    JavaScript页面渲染完毕时间监听是前端开发中一个非常常见的场景。主要目的是监听页面渲染完毕的时间,从而进行一些相关操作,如加载页面数据、初始化组件等。适用人群主要是前端开发人员,需要了解HTML、JavaScript...

    浅谈js图片前端预览之filereader和window.URL.createObjectURL

    浅谈js图片前端预览之filereader和window.URL.createObjectURL //preview img : filereader方式 document.getElementById('imgFile').onchange = function(e){ 5 var ele = document.getElementById('imgFile')....

    onload和jquery运行顺序

    window.onload = function () { console.log('window.onload 方式执行') } $(document).ready(function () { console.log('$(document).ready(function(){}) 方式执行') })

    Jqyery中同等与js中windows.onload的应用

    我们知道,在javascript中用来执行页面加载中的操作时候,我们会使用windows.onload=function(){}或者windows.onload=函数名(),也可以在body中调用onload事件调用方法即可,在jQuery中也有相当的代码

    移动安全系列教学下载共43份.zip

    Android安全开发基础--15--应用程序配置文件详解(AndroidManifest.xml).pdf Android安全开发基础--2--四大组件之活动(Activity).pdf Android安全开发基础--3--四大组件之服务 (Service).pdf Android安全开发基础...

    获取页面长宽和滚动条的位置

    &lt;!...&lt;html xmlns="http://www.w3.org/1999/xhtml" &gt; function GetPageSize() { var scrW, scrH; if(window.innerHeight && window.scrollMaxY) ... scrW = window.innerWidth ...&lt;body onload="main();"&gt; &lt;/html&gt;

    微信小程序onLaunch异步,首页onLoad先执行?

    本来按照事件顺序,小程序初始化时触发App里的onLaunch,后面再执行页面Page里的onLoad,但是在onLaunch里请求获取是否有权限,等待返回值的时候Page里的onLoad事件就已经执行了。   //app.js App({ onLaunch: ...

    15天漫游jQuery中文翻译word版

    资源名称:15天漫游jQuery中文翻译 word版内容简介:15天漫游jQuery中译本,不是很完整,但是也是学习jquery 不可或缺的东东1 day Window.onload() 一直是常用的javascript函数。数年来程序员们习惯了通过它在...

    iframe中onload的bug

    NULL 博文链接:https://snandy.iteye.com/blog/666530

    shake.js应用和资源

    window.onload = function() { var myShakeEvent = new Shake({ threshold: 15 }); myShakeEvent.start(); window.addEventListener('shake', shakeEventDidOccur, false); function ...

    js的image onload事件使用遇到的问题

    关于 Image 对象 onload 事件。 想获取的是 image 的 宽高值。所以用 onload 方法。...后来给xiaoniu同学看了后才知,img.src 应该是放在 onload 方法后边的。。 后来google下,才发现原来此类问题大家多有总

Global site tag (gtag.js) - Google Analytics