浏览器对象模型

Posted hjy-21

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了浏览器对象模型相关的知识,希望对你有一定的参考价值。

  在web中使用javascript,BOM是真正的核心。BOM提供了很多对象,用于访问浏览器的功能,这些功能与任何网页内容无关。

 

1 window对象

   BOM的核心对象是window,表示浏览器的一个实例。在浏览器中,window对象既是通过JavaScript访问浏览器窗口的一个接口,又是ECMAScript规定的Global对象。

 

2 全局作用域

    window对象同时扮演着ECMAScript中Global对象的角色,因此所有全局作用域中声明的变量。函数都会变成window对象的属性和方法。全局变量不能通过delete操作符删除,而直接在window对象上的定义的属性可以。

 

3 窗口大小

 

     var pageWidth = window.innerWidth;

     var pageHeight = window.innerHeight;

     if(typeof pageWidth != "number"){

       if(document.compatMode == "CSS1Compat"){

             pageWidth = document.documentElement.clientWidth;//IE,Firefox,Safari,Opera.Chrome保存信息

             pageHeight = document.documentElement.clientHeight;

       }else{

             pageWidth = document.body.clientWidth;//IE6中标准模式,以上属性可获得

             pageHeight = document.body.clientHeight;//混杂模式使用body

       }

     }

   4 导航和打开窗口

    window.open()可以导航到一个特定的URL,可以打开一个新的浏览器窗口,

    4个参数:加载的URL,窗口目标,特性字符串,新页面是否取代浏览器。历史记录中当前加载页面的布尔值。(第4个参数只在不打开新窗口的情况下使用)

    < a href=“http://www.baidu.com” target=“topFrame”></ a>//同等于

    window.open(“http://www.baidu.com”,“topFarme”);

    如果一个名叫"topFrame"的窗口或框架,就在该窗口或框架加载这个URL,否则会创建一个新窗口将其命名为"topFrame",

    第二个参数:_self,_top,_blank,_parent。

    5  间歇调用和超时调用

超时调用 setTimeout()

超时调用:指定的时间过后执行代码 setTimeout()方法

超时调用使用window对象的setTimeout()方法。两个参数:要执行的代码和以毫秒表示的时间

setTimeout(function(){

         alert("Hello world!");

},1000);//推荐使用

setTimeout("alert(‘Hello world‘)",1000);//可能导致性能损失,不建议以字符串作为第一个参数

后指定的代码不一定执行JavaScript是一个单线程序的解释器,因此一定时间内只能执行一段代码。为了控制要执行的代码,就有一个JavaScript任务队列。这些任务会按照将它们添加到队列的顺序执行。第二个参数告诉JavaScript再过多久把当前任务添加到队列中。调用setTimeout()之后,该方法会返回一个数值ID,表示超时调用。这个超时调用ID是计划执行代码的唯一标识符,可以通过它来取消超时调用。要取消尚未执行的超时调用计划,可以调用clearTimeout()方法,并将相应的超时调用ID作为参数传递给它。

var timeId = setTimeout(function(){

         alert("Hi");

},1000);

clearTimeout(timeId);

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

间歇调用 setInterval()

按照指定的时间间隔重复执行代码,直至间歇调用被取消或页面被卸载。setInterval() 参数与setTimeout()相同setInterval()方法同样也会返回一个间歇调用ID,该ID可用于在将来某个时刻取消间歇调用。clearInterval()取消间歇调用。在开发环境下,很少使用真正的间歇调用,原因是后一个间歇调用可能会在前一个间歇调用结束之前启动。

 

6  系统对话框

    alert()方法,向用户显示一个系统对话框,其中包含指定的文本和一个OK(“确定”)按钮。

    confirm()方法,"警告"对话框,OK按钮,cancel按钮

    prompt()方法,"提示"框,提示用户输入一些文本。

 

  7  location对象

    location提供了当前窗口中加载的文档有关的信息,还提供了一些导航功能。

    既是window对象的属性,也是document对象的属性,

    location对象的用处不只表现在它保存着当前文档的信息,还表现在它将URL解析为独立的片段,让开发人员可以通过不同的属性访问这些片段。

 

 8   查询字符串参数

    创建一个函数,可以解析查询字符串,然后返回包含所有参数的一个对象。

 

function getQuertStringArgs() {

              // 取得查询字符串并去掉开头的问号

              var qs = (location.search.length > 0 ? location.search.substring(1): ‘‘),

              // 保存数据的对象

              args = {},

              // 取得每一项

              items = qs.length ? qs.split("&") : [],

              item = null,

              name = null,

              value = null,

              // 在for循环中适应

              i = 0,

              len = items.length;

              // 逐个将每一项添加到args对象中

              for(i=0; i < len; i++) {

                item = items[i].split("=");

                name = decodeURIComponent(item[0]);

                value = decodeURIComponent(item[1]);

                if(name.length) {

                  args[name] = value;

                }

              }

              return args;

      }

 

  9  位置操作

    改变浏览器的位置,使用assign()方法并为其传递一个URL。

    location.assign(“http://wwww.baidu.com”);

    立即打开新URL,在浏览器的历史记录中生成一条记录

    window.location = “http://wwww.baidu.com”;//也会调用assign()方法,效果一样

    location.href = “http://wwww.baidu.com”;//也会调用assign()方法,效果一样,常用

    location.replace(“http://wwww.baidu.com”);

    这个方法虽然会导致浏览器位置改变,但不会在历史记录中生成新纪录,用户不能单击“后退”回到前一个页面

    location.reload();//重新加载(有可能从缓存中加载)

    location.reload(true);//重新加载(从服务器重新加载)

以上是关于浏览器对象模型的主要内容,如果未能解决你的问题,请参考以下文章

web代码片段

如何在作为选项卡的 2 个片段之间共享视图模型

关于片段生命周期

如何使用 jquery 从 asp.net 视图模型中动态删除行而不删除集合中的其余下一个对象

在每个用户的Rails中使用片段缓存

为啥 Python 不使用对象 .save() 将我的模型保存到数据库?