`
风雪涟漪
  • 浏览: 508574 次
  • 性别: Icon_minigender_1
  • 来自: 大连->北京
博客专栏
952ab666-b589-3ca9-8be6-3772bb8d36d4
搜索引擎基础(Search...
浏览量:9068
Ae468720-c1b2-3218-bad0-65e2f3d5477e
SEO策略
浏览量:18480
社区版块
存档分类
最新评论

Javascript 在浏览器环境中 (二) BOM

阅读更多

BOM

BOM是Browser Object Model的缩写。它是你能访问到的浏览器和计算机屏幕的对象集合。可以通过全局对象window和window.screen访问到。

 

重新认识window

我们已经知道了,在javascript中,每个运行环境都会有一个全局对象。在浏览器的环境中,这个全局对象就是window。所有的全局变量都是window对象的属性

window.test=1;//1
test;//1

 

当然所有的全局函数都是window对象的方法如

parseInt('123a');//123
window.parseInt('123a');//123
 

除了作为全局对象,window对象还包含了浏览器环境的相关数据。让我们看看window对象的其他属性。当然每个浏览器都是不一样的。我们就说一些常用的。规范的。

 

window.navigator

navigator对象提供了浏览器的信息和相关功能。一个属性是navigator.userAgent。一个识别浏览器的属性。在firefox下如下:

window.navigator.userAgent;
// "Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.8.1.12) Gecko/20080201 Firefox/2.0.0.12"

 在IE浏览器如下:

     Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; .NET CLR 1.1.4322; .NET 
     CLR 2.0.50727; .NET CLR 3.0.04506.30)

 

因为每个浏览器功能是个不相同的。所以一般开发这都会用这个属性来判断浏览器,这样可以写出兼容性更好的代码。

if (navigator.userAgent.indexOf('MSIE') !== -1) {
  // this is IE
} else {
  // not IE
}

 最好不要用这种方式判断浏览器,要用特殊功能检测的方法。原因是很难做到知道所有浏览器和相关版本。更容易使用的 是用特殊性的方法检测,如

if (typeof window.addEventListener === 'function') {
  //支持此方法
} else {
  //不支持此方法,有其他方式实现
}

 另一个原因是一些浏览器允许用户去修改userAgent字符串,这样就可以做到隐藏自己使用的浏览器。

 注:这一方法可以伪造成google或baidu的爬虫,有些网站针对搜索引擎进行优化,让爬虫访问更多的链接。这样修改可 能造成安全漏洞。。。

 

window.location

这个属性提供了当前URL的相关信息。如location.href.是全部的URL。location.host仅仅是主机。用for循环来看看所有的属性。

//URL:http://www.test.com:8080/search?p=javascript#results
 for(var i in location) {alert(i + ' = "' + location[i] +  '"')}
href="http://www.test.com:8080/search?p=javascript#results"
hash="#results"
host="www.test.com:8080"
hostname="www.text.com"
pathname="/search"
port="8080"
potocol="http:"
search="?p=javascript"

 还有三个方法。reload(),assign(),replace()

 如果要跳转到其他页面有很多方法

window.location.href = 'http://www.iteye.com'
location.href = 'http://www.iteye.com'
location = 'http://www.iteye.com'
location.assign('http://www.iteye.com')

 replace方法基本和assign是相同的。唯一的区别是在历史记录里不会新建一条记录。

 重载页面可以用如下方法

location.reload();

 还有其他技巧可以实现页面重载

window.location.href = window.location.href;
location = location

  window.history

window.history允许在相同浏览器的会话下,限制的访问以前用户所访问的页面。一个例子,你可以知道在用户访问此页面前,还访问过多少页面。

window.history.length;//3

但是不能看到具体的URL,因为这是隐私。。。。

window.history[0];//ERROR

可以用history.forward()和history.back()来控制用户的前进和后退。

也可以history.go(-2),让用户返回历史页面。如果要重载页面可以用history.go(0);

 

window.frames

这个属性是整个页面frame的集合。需要注意的是frames和iframes没有区别。无论页面上是否有frames。window.frames总是指向window.

注:IE下的window.frames对象仅仅是个Object.

 window.frames === window;//true 

 每个frame都有自己的全局对象window.假设页面上有

<iframe name="myframe" src="about:blank" />

 想要访问iframe的window对象,如下方法都可以

window.frames[0]
window.frames[0].window
frames[0].window
frames[0]

 在页面中,可以访问fame的属性。如重载frame

frames[0].window.location.reload()

 在frame也可以访问页面

frames[0].parent === window//true 

 可以使用top来访问最上一层的页面。

window.frames[0].window.top === window

 

window.screen

screen提供了浏览器之外的桌面信息。screen.colorDepth是显示器的色深。对监控系统来说比较有用

window.screen.colorDepth;//32

 还可以知道屏幕的分辨率

screen.width;//1440
screen.availWidth;//1440
screen.height;//900
screen.availHeight;//847

 height和availHeight不同的是,height是全部的高度,而availHeight是除了操作系统的菜单之后的高度,如windows的开始菜单。。。

 

 

window.open()/close()

再说了很多跨浏览器的window的属性之后,我们来看看window的方法。open方法可以新弹出一个页面。因为广告的原因一般用户都屏蔽了弹出页面。。。

window.open()有下列参数

  • 新开网页的URL
  • 新开窗口的名字
  • 用逗号隔开的属性:resizable.是否让用户自定义大小,width,height 窗口的长宽,status窗口的状态栏等等

window.open()返回了一个窗口的实例

var win = window.open('http://www.iteye.com', 'packt',  
                      'width=300,height=300,resizable=yes');

 win对象指向了窗口的window对象。你可以校验win来判断弹出窗口是否被屏蔽了。

win.close()会关闭这个新的窗口。

尽量少用window.open()。可以用浮动的div来取代。

 

window.moveTo()/window.resizeTo()

window.moveTo(100,100).浏览器会移动到屏幕x=100,y=100的位置上。位置是相对于左上角。

window.resizeTo(100,100).浏览器调整大小100*100

 

window.alert(), window.prompt(), window.confirm()

我们经常使用alert()就是window的一个方法。如alert("haha").需要注意的是这三个方法都不是ECMAScript 。而是浏览器本身的方法。

confirm()让用户有个选择Ok和Cancel.

prompt()让用户有个文本输入。

confirm一般用来让用户是否确定执行某个操作的功能,如是否删除

if (confirm('是否删除?')) {
  // delete
} else {
  // abort
}

 prompt()弹出个对话框让用户输入

 

var answer = prompt('And your name was?');

 

window.setTimeout(), window.setInterval()

这两个方法可以控制按照指定的计划来执行代码。

setTimeout()在多少毫秒之后,执行一次代码。

setInterval()每隔多少秒执行代码

 

function boo(){alert('javaeye!');}
setTimeout(boo, 2000);//4

上面的代码两秒之后执行。注意返回一个结果为4。这个是timeout的ID,我们可以用clearTimeout方法来删除它。

下面看看setInterval的使用

var id = setInterval(boo, 2000);

 以上结果会每隔两秒执行一次boo方法。我们用clearInterval来停止。

 

window.document

window.document是个BOM对象指向了本页的文本对象。下一节介绍DOM

分享到:
评论
2 楼 风雪涟漪 2009-02-11  
tom840520 写道
对于window.frames === window;这句在FF中是true,但是IE中是false。

对 ,在IE下window.frames是个类似'window'。
1 楼 tom840520 2009-02-11  
对于window.frames === window;这句在FF中是true,但是IE中是false。

相关推荐

    10JavaScript浏览器对象模型BOM.docx

    JavaScript浏览器对象模型(BOM,Browser Object Model)是JavaScript在Web开发中用于操作浏览器特性的核心部分。它不依赖于HTML文档对象模型(DOM),而是提供了与浏览器交互的一系列对象,如Window、Navigator、...

    (bom)浏览器中的JavaScript.doc

    详细介绍 BOM,javascript的浏览器对象

    JavaScript BOM操作 示例代码

    JavaScript BOM操作 示例代码JavaScript BOM操作 示例代码JavaScript BOM操作 示例代码JavaScript BOM操作 示例代码JavaScript BOM操作 示例代码JavaScript BOM操作 示例代码JavaScript BOM操作 示例代码JavaScript ...

    JavaScript的浏览器对象详解

    JavaScript是一种广泛应用于Web开发的脚本语言,它在浏览器环境中运行,为网页提供动态交互功能。浏览器对象模型(Browser Object Model,简称BOM)是JavaScript与浏览器进行交互的基础,允许我们访问和操作浏览器的...

    JavaScript_BOM.txt

    浏览器对象模型(Browser Object Model,简称 BOM)是 JavaScript 中一个重要的概念,它提供了与浏览器窗口交互的方法和属性。通过 BOM,开发者可以控制浏览器窗口的行为,如改变窗口大小、位置,甚至创建新的窗口等...

    javascript中的BOM与DOM、JS核心.pdf

    JavaScript的核心是基于ECMAScript的,ECMAScript是与运行环境无关的语言,浏览器是ECMAScript的一个众所周知的运行环境,出了浏览器,js还可以运行在PS等等中。 BOM(Browser Object Model)对象是JavaScript访问...

    Javascript之BOM与DOM讲解

    ECMAScript不局限于特定的宿主环境,因此在不同的环境中,如浏览器或Flash,其表现形式可能会有所不同。 2. DOM(文档对象模型): DOM是一种标准,由W3C制定,用于处理HTML和XML文档内容的方法和接口。DOM将网页...

    第四章 浏览器对象模型BOM

    在BOM中,`window`对象是核心,它是所有其他BOM对象的父对象。BOM的结构层次如下: - `window`: 包含了浏览器窗口的所有功能。 - `navigator`: 提供浏览器的详细信息,如浏览器名称、版本等。 - `location`: 代表...

    js中的BOM和DOM对象

    在这个过程中,JavaScript与两种关键的对象模型紧密相关:浏览器对象模型(BOM)和文档对象模型(DOM)。本文将深入探讨这两个概念,并通过实例解析它们的工作原理。 **浏览器对象模型(BOM)** BOM全称为Browser ...

    Javascript高级编程学习笔记27——BOM1window对象1.docx

    在浏览器环境中,JavaScript的核心语法是ECMAScript,但BOM提供了与浏览器功能交互的一系列对象。尽管各个浏览器厂商可能有不同的实现,但其中一部分已经标准化,并被纳入HTML5规范。 BOM的核心是`window`对象,它...

    【JavaScript源代码】JavaScript中BOM和DOM详解.docx

    JavaScript中的BOM(Browser Object Model,浏览器对象模型)和DOM(Document Object Model,文档对象模型)是两个核心概念,它们都是JavaScript与网页交互的关键部分。 **BOM(浏览器对象模型)** 1. **Window...

    2 妙味课堂原创JavaScript视频教程 DOM 2课 BOM课程资料

    6. 浏览器事件:了解BOM中的事件,如滚动、加载、卸载等,以及如何处理这些事件。 7. 窗口弹出:掌握`open`、`close`和`confirm`、`prompt`、`alert`等方法,用于打开新窗口和进行用户交互。 通过这套课程的学习,...

    浏览器对象BOM.ppt

    - **窗口对象(window)**:代表浏览器窗口,是JavaScript的全局对象,所有表达式都在其环境下计算。提供调整窗口大小和位置、打开新窗口、系统提示框、状态栏控制和定时操作等功能。 - **浏览器信息对象...

    JavaScript浏览器对象模型BOM(BrowserObjectModel)实例详解

    document对象是BOM中非常重要的对象,它代表了整个HTML文档。document对象提供了对文档内容、结构和样式进行访问和操作的方法。document对象的links数组包含了所有的标签元素,images数组包含了所有的标签元素,...

    Javascript之BOM(window对象)详解_.docx

    在Web开发中,尽管ECMAScript是JavaScript的基础,但BOM对于实现与浏览器环境的交互至关重要。 首先,window对象是BOM的核心,它代表了浏览器的一个实例。在浏览器环境中,window既是JavaScript访问浏览器窗口的...

    javascript中的BOM与DOM、JS核心[收集].pdf

    在BOM中,`window`对象是核心,它包含了诸如`document`、`location`、`navigator`、`screen`、`history`和`frames`等一系列属性。例如,`document`提供了访问和修改网页内容的能力,`location`可以用来获取或改变...

    slide-bom:浏览器对象模型 (BOM) 的网页幻灯片

    "Slide-BOM: 浏览器对象模型(BOM)的网页幻灯片" 是一个关于Web开发的主题,特别是聚焦在JavaScript中的浏览器对象模型(Browser Object Model)。"滑动炸弹"可能是指一种动态效果或者交互设计,其中幻灯片以滑动方式...

    第二章JavaScript操作BOM对象4

    在本章"第二章JavaScript操作BOM对象4"中,我们将深入探讨JavaScript在网页中的引用方式、基本数据类型以及数组的定义与访问。这将帮助我们更好地理解和运用JavaScript这一强大的客户端脚本语言。 首先,让我们来看...

    JavaScript基础&BOM,学习Java第42天

    JavaScript是一种广泛应用于网页和网络应用开发的解释性脚本语言,其主要由ECMAScript、BOM(浏览器对象模型)和DOM(文档对象模型)三部分组成。在HTML、CSS和JS这构建网站的三大技术中,JavaScript负责赋予网页...

    JavaScript_2_DOM和BOM1

    JavaScript DOM 和 BOM JavaScript 的 DOM(Document Object Model)和 BOM(Browser Object Model)是两种不同的对象模型,它们都是 JavaScript 语言的核心组件。DOM 是一种编程接口,用于访问和操作 HTML 文档中...

Global site tag (gtag.js) - Google Analytics