第 8 章 BOM
8.1 window 对象
BOM 的核心对象是 window, 表示浏览器的一个实例.
全局变量不能通过 delete 操作符删除, 但直接在 window 对象上定义的属性可以.
尝试访问未声明的变量会报错, 但通过查询 window 对象可以知道某个未声明变量是否存在. 如
var newValue=window.oldValue;// 如果 oldValue 未定义 newValue 为 undefined.
moveTo()移动到 (x,y) 位置, 和 moveBy()移动了 (x,y) 位置, 都可以将窗口移动到新位置.
resizeTo()调整浏览器窗口为 (w,h) 大小, resizeBy()缩放了 (w,h) 大小.
window.open()接收 4 个参数: 要加载的 url, 窗口目标, 特性字符串, 新页面是否取代浏览器历史记录中当前加载页的布尔值.
如果浏览器内置屏蔽程序阻止弹出窗口, window.open()可能返回 null.
setTimeout()超时调用, 接收要执行的代码和等待时间.
setInterval()间歇调用.
- alert(),confirm(),prompt()
- window.print()
- window.find()
8.2 location 对象
location.search 可以访问 url 的大多数信息.
location.assign("url")与 location.href 用法相同.
location.replace("url")不会在历史记录生成新纪录.
reload()重新加载页面, reload(true)从服务器重新加载.
navigator.plugins 检测浏览器中是否装了特定插件. 典型做法是需要针对每个插件分别创建检测函数.
refresh()用于刷新 plugins 以反映最新安装的插件.
registerContentHandler()和 registerProtocolHandler()可以让一个站点指明它可以处理特定类型的信息.
screen 对象基本只用来表明客户端的能力.
history.go()可以在用户历史纪录中任意跳转, 负数向后(后退), 正数向前(前进). 字符串则跳转到历史纪录中包含该字符串的第一个位置, 如不包含, 则无效.
back(),forward()
history.length 保存着历史纪录数量.
第 9 章 客户端检测
9.1 能力检测
能力检测主要用于确定浏览器支持特定的能力. 先检测达成目的最常用的特性, 再检测实际用到的特性.
能力检测对于想知道某个特性是否会按照适当方式行事 (而不仅仅是存在) 非常有用.
9.2 怪癖检测
怪癖检测主要是识别浏览器的特殊行为, 主要是想知道浏览器存在什么缺陷(即 bug).
由于检测 bug 涉及代码, 建议仅检测有直接影响的 bug, 最好在一开始就执行类似检测.
9.3 用户代理检测
用户代理检测通过检测用户代理字符串来确定实际使用的浏览器. navigator.userAgent 获取用户代理字符串.
五大浏览器呈现引擎: IE,Geocko(如 Firefox),webKit(如 Safari,Chrome),Khtml(如 Konqueror),Opera.
识别呈现引擎, 第一识别 Opera, 检测 window.opera 对象是否存在; 第二识别 WebKit, 检测是否包含 AppleWebkit 字符串; 第三识别 KHTML, 检测 KHTML 或 Konqueror 字符串; 第四识别 Gecko, 检测 Gecko 是否出现在 rv: 后面; 最后检测 IE, 检测 MSIE 字符串.
识别浏览器, 通常检测浏览器代码与检测呈现引擎是混在一起的, 基本思路是从完整版本号中检测浏览器关键字.
三大主流平台: Windows,Mac,Unix(包括各种 Linux).
识别平台, 使用 navigator.platform 对象检测是否包含 Win32,Win64,MacPPC,MacIntel,X11,Linux i686.
识别 Windows 操作系统, 获取 win 空格后的字符串.
识别移动设备, 关键字 iPhone,iPod,iPad,Mobile;Android;NokiaN;CE,Ph 等.
识别游戏系统, 关键字 Wii(任天堂),playstation 等.
来源: http://www.jianshu.com/p/312dcbfb2e36