第八章 BOM

作者: 张果果 | 来源:发表于2016-10-07 11:25 被阅读28次

    1. BOM的核心对象时window。在浏览器中,window对象即使通过JavaScript访问浏览器窗口的一个接口,又是ECMAScript规定的Global对象。


    2.定义全局变量与在window对象上直接定义属性的区别:全局变量不能通过delete操作符删除,而直接在window对象上定义的属性可以。


    3.尝试访问未声明的变量会抛出错误,但是通过查询window对象,可以知道某个可能未声明的变量是否存在。

    var newValue = oldValue ;//抛出错误,因为oldValue未定义

    var newValue= window . oldValue;//不会抛出错误。若oldValue不存在则newValue = undefined


    4.top对象始终指向最外层的框架,也就是浏览器窗口;

       parent对象始终指向当前框架的直接上层框架;

       self对象始终指向window。


    5.获取窗口相对于屏幕左边和上边的位置(跨浏览器,无法取得精确坐标值):

    var leftPos = ( typeof window . screenLeft == "number" ) ? window . screenLeft : window . screenX ;

    var topPos = ( typeof window . screenTop == "number" ) ? window . screenTop : window . screenY ;


    6.获取页面视口的大小(跨浏览器):

    var pageWidth = window . innerWidth ,

          pageHeight = window . innerHeight ;

    if ( typeof pageWidth != "number" ){

        if ( document . compatMode == "CSS1Compat" ){ // IE6标准模式下

            pageWidth = document . getElement . clientWidth ;

            pageHeight = document . getElement. clientHeight ;

        } else { // IE6混杂模式下

            pageWIdth = document . body . clientWidth;

            pageHeight = document . body . clientHeight ;

        }

    }


    7. setTimeout()的第二个参数高数JavaScript再过多长时间把当前任务添加到队列中。若队列是空的,那么添加的代码会立即执行;若队列不是空的,那么就要等前面的代码执行完了以后再执行。


    8.超时调用(setTimeout())的代码都是在全局作用域中执行的,因此函数中的this的值在非严格模式下指向window对象,在严格模式下是undefined。


    9.一般认为,使用超时调用来模拟间歇调用的是一种最佳模式,原因是后一个间歇调用可能会在前一个间歇调用结束之前启动。所以最好不要使用间歇调用

    相关文章

      网友评论

        本文标题:第八章 BOM

        本文链接:https://www.haomeiwen.com/subject/bcjyyttx.html