热门关键字:
jquery > jquery教程 > html5 > 剑指前端(前端入门笔记系列)——BOM

剑指前端(前端入门笔记系列)——BOM

340
作者:管理员
发布时间:2020/3/15 15:10:26
评论数:0
转载请自觉注明原文:http://www.jq-school.com/Show.aspx?id=1040

  BOM

  ECMAScript是JavaScript的核心,但如果要在Web中使用JavaScript,那么BOM(浏览器对象模型)则无疑才是真正的核心,BOM提供了很多对象,用于访问浏览器的功能,这些功能与任何网页内容无关,那么,什么是BOM呢?我们可以从这几点解析一下:

  1.BOM是BrowserObjectModel的缩写,简称浏览器对象模型。这个对象就是window

  2.BOM提供了独立于内容而与浏览器窗口进行交互的对象,也就是BOM是浏览器厂家分别推出

  3.BOM由一系列相关的对象构成,并且每个对象都提供了很多方法与属性

  4.BOM缺乏标准,但是BOM提供了ECMAScript的运行平台

  5.BOM最初是Netscape浏览器标准的一部分

  6.BOM主要用于管理窗口与窗口之间的通讯,因此其核心对象为window

  window对象

  浏览器:可以运行html+css+js的一个环境,这个环境有很多种,所以会产生很多的兼容问题。大部分浏览器把自己的大部分功能都抽象出来描述成一个对象,这个对象叫window,window对象是浏览器内置的一个对象,是js中全局对象的寄存地,相当于BOM的一个抽象。在浏览器中,window对象有双重角色,它既是通过JavaScript访问浏览器窗口的一个接口,又是ECMAScript规定的一个Global对象,因此有权访问parseInt()等方法。

  window对象表示浏览器的一个实例,这就意味着全局作用域中声明的变量、函数都会变成window对象的属性和方法,例如:

  varage=29;

  functionsayAge(){

  return"123";

  }

  console.log(age===window.age);//true

  console.log(sayAge===window.sayAge);//true

  我们可以看到,全局变量age其实就是window.age,而全局函数sayAge就是window.sayAge,只不过window可以省略不写,我们写的全局变量和函数其实都会自动归在window对象名下,那么我们再来验证一下:

  console.log(parseInt===window.parseInt);//true

  console.log(parseFloat===window.parseFloat);//true

  console.log(setInterval===window.setInterval);//true

  console.log(setTimeout===window.setTimeout);//true

  console.log(clearInterval===window.clearInterval);//true

  console.log(clearTimeout===window.clearTimeout);//true

  console.log(Number===window.Number);//true

  console.log(Date===window.Date);//true

  console.log(String===window.String);//true

  console.log(isNaN===window.isNaN);//true

  这些都是我们常用的内置函数,它们也都属于window对象

  【注】抛开全局变量会变成window对象的属性不说,定义全局变量与在window对象上面直接定义属性还是有区别的,区别就是全局变量不能通过delete操作符删除,而直接在window对象上定义的属性可以:

  varage=18;//定义全局变量

  window.name="AI-fisher";//在window对象上定义变量(属性)

  //在IE<9时抛出错误,其他浏览器返回false

  deletewindow.age;//删除全局变量

  //在IE<9时抛出错误,其他浏览器返回true

  deletewindow.name;//删除window对象上定义的变量

  console.log(window.age);//18

<80�confirm(提示文字);//点击确定返回true,点击取消返回false

  //关闭浏览器,火狐不支持,但都支持通过别的网页打开的新的网页关闭,不允许关闭非脚本打开的页面

  close();

  open(url,name,feature,replace);

  //url,可选,要在新窗口中显示的文档的URL

  //name,可选,声明了新窗口的名称

  //feature,replace自行扩展

  //谷歌会默认把系统自动打开的新网页阻止掉,但不阻止通过事件打开的网页

  子对象

  history对象(包含浏览器访问过的url)

  history对象保存着用户上网的历史记录,从窗口被打开的那一刻算起,因为history是window对象的属性,因此每个浏览器窗口、每个标签页乃至每个框架,都有自己的history对爱那个与特定的window对象关联。处于安全方面的考虑,开发人员无法得知用户浏览过的URL。不过,借由用户访问过的页面列表,同样可以在不知道实际URL的情况下实现后退和前进。

  属性

  history.length;//返回历史记录的数量

  方法

  history.back();//后退,加载前一个url。

  history.forward();//前进,需要后退一下之后,才有前进的方向

  history.go(num);//参数为正,前进相应的数目,为负,后退相应的数目,为0,刷新

  location对象(包含当前url的相关信息,而history对象不能具体反映url的相关信息)

  location对象是最有用的属性之一,它提供了与当前窗口中加载的文档有关的信息,还提供了一些导航功能。事实上,location对象是很特别的一个对象,因为它既是window对象的属性,也是document对象的属性;换句话说,window.location和document.location引用的是同一个对象。location对象的用处不只是表现在他保存着当前文档的信息,还表现在它将URL解析为独立的片段,让开发人员可以通过不同的属性来访问这些片段。

  属性

  方法

  assign()方法可以立即打开新URL并在浏览器的历史记录中生成一条记录。

  location.assign(url);//加载新页面,当url为空字符时,加载当前页面

  如果将location.href或window.location设置为一个URL值,也会以该方法调用assign()方法。。例如:下列两行代码与显示调用assign()方法的效果完全一样。

  window.location="http://www.baidu.com";

  location.href="http://www.baidu.com";

  跟位置有关的最后一个方法是reload()方法,作用是重新加载当前显示的页面,如果调用reload()时不穿敌人和参数,页面就会以最有效的方式重新加载。也就是说,如果页面自上次请求以来并没有改变过,页面就会从浏览器缓存中重新加载。

  location.reload();

  如果要强制从服务器重新加载,则需要像下面这样为该方法传递参数true

  location.reload();//传递一个true,不使用缓存刷新

  navigator对象(浏览器信息):

  属性

  navigator.appName;//返回当前浏览器的名称

  navigator.appVersion;//返回当前浏览器的版本号

  navigator.platform;//返回当前计算机的操作系统

  以上方法已经在逐渐被抛弃,出现一个新的属性替代这些属性:

  navigator.userAgent;//返回浏览器信息

  frames对象:包含当前页面所有的框架信息

  属性

  frames.length;//返回当前页面的框架数量

  frames[0].location;//修改第一个框架的地址

  screen对象:包含当前显示屏信息

  JavaScript中有几个对象在编程中用处不大,而screen对象就是其中之一。screen对象基本上只用来表明客户端的能力,其中包括浏览器窗口外部的显示器的信息,如像素宽度和高度等。每个浏览器总的screen对象都包含着各不相同的属性。下面列出几个属性是相对来说比较实用而且各浏览器都支持的属性。

  属性

  screen.width/height//屏幕总宽高度

  screen.availWidth/availHeight//屏幕的宽高(不包括任务栏)





如果您觉得本文的内容对您的学习有所帮助:支付鼓励



关键字:html
友荐云推荐