• JavaScript高级程序设计49.pdf


    HTML5事件

    contextmenu事件

    contextmenu事件是冒泡的,可以将事件处理程序指定到document,这个事件的目标是用户操作的元素,在兼容DOM的浏览器中使用event.preventDefalut()取消默认行为,在IE中将event.returnValue的值设置为false取消默认行为

    contextmenu事件属于鼠标事件,其事件对象中包含与光标位置有关的所有属性

    beforeunload事件

    这个事件在页面卸载之前触发,让开发人员在页面卸载前阻止这一操作,弹出一个提示框,告知用户页面将被卸载,询问用户是否要关闭页面

    为了显示弹出的对话框,必须将event.returnValue的值设置为要显示给用户的字符串(IE和Firefox),同时作为函数的值返回(Safari和Chrome)

    EventUtil.addHandler(window,"beforeunload",function(event){

            event=EventUtil.getEvent(event);

            var message="I'm really going to miss you if you go.";

            event.returnValue=message;

            return message;

        });

    Opera11及之前版本不支持beforeunload事件

    DOMContentLoaded事件

    window的load事件会在页面中的一切都加载完毕时触发,DOMContentLoaded事件则是在形成完整的DOM树之后触发(不理会图像、Javascript文件、CSS文件或其他资源)

    EventUtil.addHandler(document,"DOMContentLoaded",function(event){

            alert("Content loaded");

          });

    DOMContentLoaded事件早于load事件触发

    readystatechange事件

    IE为某些DOM文档部分提供了readystatechange事件,支持这个事件的每个对象都有一个readyState属性,包含5个值的其中一个

    uninitialized(未初始化):对象存在但未初始化

    loading(正在加载):对象正在加载数据

    loaded(加载完毕):对象加载数据完成

    interactive(交互):可以操作对象,但还没有完全加载

    complete(加载完毕):完成

    并非所有对象都会经历readyState这几个阶段,readyState属性不总是连续的

    interactive状态与load事件的先后顺序不可确定,并且interactive状态与完成阶段的顺序也不一定确定,在检测时需要同时检测交互和完成阶段

    if(document.readyState=="interactive"||document.readyState=="complete"){

                ...

            }

    支持readystatechange事件的浏览器有IE、Firefox4+、Opera

    另外<script>(IE和Opera)<link>(仅IE中)也会触发readystatechange事件,同样会面临状态属性顺序不一样的这个问题

    if(target.readyState=="loaded"||target.readyState=="complete"){

            EventUtil.removeHandler(target,"readystatechange",argument.callee);

            alert("Script Loaded");

          }

    之后移除事件,防止触发2次

    pageshow和pagehide事件

    Firefox和Opera有一个“往返缓存”,缓存里保存着页面的数据,用户在使用浏览器的“前进”和“后退”时能加快转换速度,在bfcache中读取的数据不会触发load事件

    在重新加载的页面中,pageshow会在load事件触发后触发;面对bfcache中的页面,pageshow会在页面完全恢复的那一刻触发。虽然这个事件的目标是document,但必须将事件处理程序添加到window

    除了通常的属性,pageshow事件的event对象还包含一个名为persisted的布尔值,如果页面保存在bfcache中,这个值为ture,否则为false

    pagehide事件则是在浏览器卸载页面时触发,而且在unload事件前触发,与pageshow事件一样,其在document上面触发,但事件处理程序要添加到window对象上

    pagehide事件也有一个persisted属性,如果页面卸载后保存在内存中,值为true,否则false

    支持pageshow和pagehide事件的浏览器有Firefox、Safari5+、Chrome和Opera,IE不支持它们

  • 相关阅读:
    对javascript匿名函数的理解(透彻版)
    使用Emmet(前身Zen Coding)加速Web前端开发
    实现IE6-Ie8媒体查询
    css3常用伪类选择器
    ScriptManager,updatepanel中按钮事件不兼容IE10以后版本
    UpdatePanel中弹出不能弹出消息
    页面缓冲显示正在加载图片
    练习JsonJquery查找数据
    Ajax练习:使用jQuery验证用户名是否存在
    使用Android SDK中的WebView
  • 原文地址:https://www.cnblogs.com/sdgjytu/p/3785641.html
Copyright © 2020-2023  润新知