浏览器window对象与JavaScript浏览器检测

Window对象

BOM对象的核心是window,它表示浏览器的一个实例。在浏览器中,window对象有双重角色,它既是通过JavaScript访问浏览器窗口的一个接口,又是ESMAScript规定的Global对象。这意味着在网页中定义的任何一个对象,变量,函数,都以window作为其Global对象,因此有权访问parseInt()等方法。

 

窗口关系及框架(frame)

我们在访问窗口里的框架时,最好采用top而非window(例如:top.frame[0])。

因为top对象始终指向最外层的框架,也就是浏览器窗口。使用它可以确保在一个框架中正确地访问另一个框架。因为对于框架中的任何编写的代码而言,其中的window对象指向的都是那个框架的特定实例,而非最高层框架。

与top相对的另一个window对象是parent。顾名思义,parent(父)对象始终指向当前框架的直接上层框架。

 

浏览器检测

浏览器检测有三种方法:能力检测,怪癖检测,用户代理(userAgent)检测

能力检测(又称特性检测)的目标不是识别特定的浏览器,而是识别浏览器的能力。

采用这种方式不必顾及特定的浏览器如何如何,只要确定浏览器支持特定的能力,就可以给出解决方案。

推荐使用typeof 操作符用于确定属性是否存在且正确。

 

怪癖检测的目标是识别浏览器的特殊行为 。但与能力检测不同,怪癖检测是想要知道浏览器存在什么缺陷。这通常需要一小段代码,以确定某个特性不能正常工作。

 

用户代理(userAgent)检测通过检测用户代理字符串来确定实际使用的浏览器。我们可以通过访问window对象的navigator.userAgent属性访问。在客户端,用户代理检测一般被当做一种万不得已采用的方法,其优先级排在能力检测和怪癖检测之后。

 

引擎

支持的浏览器

Gecko

Firefox,Netscape

WebKit

Safari,Chrome,iOS,Android

KHTML

Konqueror

Opera

Opera

IE

IE8,IE11,Edge

 

[^abc]表示匹配非abc的所有字符,^是取反的意思

如果想在后面取出匹配的字符,可以将要取出的正则字符用括号括起来

 

[?:abc] 匹配abc,但是不记住匹配项。这是为了将abc看做一个整体与后面的运算符一起使用。如表达式“[?:123]?456”可以匹配123456也可以匹配456.

 

在大多数情况下,识别了浏览器的呈现就足以为我们采取正确的操作提供依据了。可是只有呈现引擎还不能说明存在所需的Javascript功能

猜你喜欢

转载自blog.csdn.net/xc917563264/article/details/81214982