javascrit 中事件Event(三)— HTML5事件

34 篇文章 0 订阅
4 篇文章 0 订阅

    这篇主要概述HTML5事件,在HTML5中的事件中对Event进行了扩展,新增了一些新的事件,如contextmenu,beforeunload,DOMContentLoaded,readystatechange事件等。下面讲解重点用的多的几个事件。

1、beforeunload:在浏览器关闭(卸载)之前触发,可以通过它取消关闭(卸载)并继续使用原有页面。

例:关闭页面前弹出提示框提示用户是否关闭页面。

EventUtil.addEvent(window, 'beforeunload', function(event) {

    event = EventUtil.getEvent(event);

    var message = "是否关闭页面?"

    event.returnValue = message;

    return message;

})

注:1)为显示弹窗,必须将event.returnValue 设置为要显示的的字符串。

       2)Opera 11 及之前的版本不支持此事件,IE、firefox、safari、chrome都支持此事件。

 

2、DOMContentLoaded事件: 在页面形成完整的DOM树之后触发,无论图片,js文件,css文件或其他资源是否下载完成。

    DOMContentLoaded事件虽然冒泡到window,但它实际的target是document。     

 EventUtil.addEvent(document, 'DOMContentLoaded', functioin(){

   console.log('content loaded');

 })

    1)支持此事件的浏览器,可直接对document 或window对象添加事件处理程序;浏览器包括IE9+,FireFox,Chrome,Safari3.1+和Opera 9+。

    2)不支持此事件的浏览器,可在页面加载时设置一个时间为0的定时器。        

  setTimeout(function() {

        //添加事件处理方法

  },0);

    在页面下载和构建期间,只有一个JavaScript处理程序,因此定时调用会在改过程结束后立即触发。

    3)DOMContentLoaded始终会在load事件之前触发。

 

3、readystatechange:提供与文档火元素的加载状态有关的信息,IE为DOM文档中的某些部分提供了此事件。  
 

uninitialized未初始化
loading正在加载数据中
loaded已加载数据完成
interactive可以操作对象了
complete对象已加载完成

    1)对document而言,readystatechange处在interactiv阶段与DOMContentLoaded大致相同。在与load事件一起使用时,无法预测俩个事件的触发的先后顺序。   
    2)支持readystatechange事件的浏览器有IE,FireFox和Opera。

    3) 示例为script 监听readystatechange事件       

  EventUtil.addEvent(window, 'load', function(){

        var script = document.createElement('script');

        EventUtil.addEvent(script, 'readystatechange', functioin(event) {

            event = EventUtil.getEvent(event);

            var targett = EventUtil.getTarget(event);

            if (target.readyState == 'loaded' || target.readySate == 'complete' ) {

                EventUtil.removeEvent(target, 'readystatechange', arguments.callee);

                console.log('script loaded')

            }

        });

    })

4、pageshow和pagehide:页面显示或隐藏事触发的事件。

     这里有个特性往返缓存bfcache(back-forward cache)需先说明,bfcache保存着页面数据,同时保存DOM和JavaScript的状态,即将整个页面保存在内存中。若页面保存在bfcache中,将不触发页面的load事件

 

    1)pageshow:在页面显示时触发,无论页面是否来自bfcache。第一次进入(未缓存)的页面,将在load事件触发后触发pageshow方法。

         pageshow事件的event对象包含一个名为persisted的布尔值属性,标示页面是否保存在bfcache中;页面保存在bfcache中,persisted为true;否则为false。           

  EventUtil.addEvent(window, 'pageshow', functioin(event) {

     console.log(event.persisted); 

  })

     2)pagehide:在页面卸载时触发,在页面的unload事件之前触发。

     pageshow,pagehide事件都在document上触发,但事件处理程序必须注册到window对象上。

 

5、hashchange事件:HTML5新增了此方法,但浏览器地址URL发生变化时触发。

     hashchange事件必须注册到window对象上,此事件对象event对象包括了2个新的属性:oldURL和newURL,分别表示变化前后地址。

    支持此事件的浏览器包括:IE8+,FireFox3.6+,Safari5+,Chrome,Opera;其中支持oldURL,newURL属性的只有FireFox,Chrome,Opera。           

EventUtil.addEvent(window, 'hashchange', functioin(event) {

    console.log(event.oldURL + "," + event.newURL); 

 })

6、orientationchange事件:设备横竖屏切换时触发。

    在Safari浏览器中添加了orientationchange事件,在用户将设置横竖屏时切换时触发。同时,在Safari中的window对象中,新增了一个orientation对象,它包含3个值:0 表示竖屏模式;90 表示向左旋转的横向模式, -90 表示向右旋转的横向模式。

EventUtil.addEvent(window, 'orientationchange', functioin(event) {

     console.log( "current orientation is " + window.orientation);  // 0 ,90 , -90

})

  至此,JavaScript的事件event讲完了,有纰漏欢迎指正。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值