JavaScript学习笔记(7)
来源:互联网 发布:什么下载软件好 编辑:程序博客网 时间:2024/06/08 11:02
BOM(浏览器对象模型)
BOM是JavaScript的第二大核心,包含了很多对象用于访问浏览器的功能,这些功能与网页内容无关,很大程度上方便了浏览器的操作。
1 window对象
BOM的核心对象,既是通过JS访问浏览器的接口,也是网页中定义的任何一个对象、变量、函数的全局对象。
1.1 全局作用域
在全局作用域下定义的变量和函数都会被自动归在window对象名下,可以通过window.propertyName,window.functionName()访问和调用。
但是定义全局变量和在window对象上直接定义属性还是有不同之处:
全局变量不能通过delete操作符删除,window对象上定义的属性可以。
var age = 1; // 全局变量 可以用window.age访问window.color = "red"; //window对象上定义的属性delete window.age; //返回false,全局变量不能用delete删除delete window.color// 返回true
1.2 窗口关系和框架
HTML中用frame来划定网页的大致框架是很常用的方法。每个框架都有自己的window对象,并且保存在frames集合里,在集合中,可以通过数值索引(从0开始,左上至右下递增)或者框架名称(name属性)来访问相应的window对象。
更常用的是top、parent、self对象,
- top表示顶层框架(最外层框架,即浏览器窗口);
- 如果有框架集嵌套,则parent表示当前框架的直接上层框架;
- self则是表示window所指向的框架的特定实例。
<html> <head> <title>Frameset</title> </head> <frameset rows="160,*"> <frame src="frame1.html" name="topFrame"> <frameset cols="50%,50%"> <frame src="frame2.html" name="leftFrame"> <frame src="frame3.html" name="rightFrame"> </frameset> </frameset></html>
上例中的3个frame的访问规则可以用下图表示:
1.3 窗口位置和窗口大小
2 location对象
location提供了与当前窗口中加载的文档有关的信息,还提供了一些导航功能,同时还可以将URL解析为独立的片段。location对象既是window对象的属性,也是document对象的属性。
location对象的所有属性:
2.1 查询字符串参数
由于search属性的特殊性,当查询字符串比较复杂的时候,通过location.search得到的结果还需要再次解析。
多个查询字符串之间会用”&”隔开,如下函数,可以实现对多个查询字符串的参数-值对的解析。
function getQueryArgs(){ var qs = (location.search.length > 0?location.search.substring(1):"");//去掉开头的?问号 var args = {}; //保存最终解析的结果 var items = qs.length?qs.split("&"):[]; //若qs不为空,则以&为界分割字符串 存入items数组 var item = null; //保存中间结果 var name = null, value = null;//由于存储参数和参数值的变量 var i = 0, len = items.length;//循环变量和循环终止上界 for(i = 0; i < len; i++){ item = items[i].split("="); //用等号作为分隔,将参数和参数值拆分,每一次循环item数组都有2项 name = decodeURIComponent(item[0]); //将item数组的第一项解码并存入name value = decodeURIComponent(item[1]);//将item数组的第二项解码并存入value if (name.length){ args[name] = value; //将键值对保存进args散列表中 } } return args;}location.search = "?q=1&id=100"var args = getQueryArgs();alert(args["q"]); //"1"alert(args["id"]); //"100"
2.2 位置操作
location对象可以改变浏览器的位置.
其中最常用的方法是location.assign(url)
,该方法可以立即打开新的URL并在浏览器的历史记录中生成一条记录,修改location.href属性也有同样的效果。修改location的其他属性也可以改变当前加载的页面。 location.replace(url)
方法会跳转到指定URL,但不会生成历史记录,使用后退也不能返回。 location.reload()
方法会重新加载当前页面,无参数调用时,页面会自动判断最优方式,无改变则从缓存中加载,有改变则从服务器加载。参数为true则指定从服务器重新加载。
3 navigator对象
navigator对象用于识别客户端浏览器。其属性包括浏览器名称、版本信息、浏览器配置、客户端操作系统等信息。
3.1 检测插件
navigator对象的plugins属性是个数组,可以用于检测浏览器是否安装了特定插件。,数组的每一项都包含了下列属性。
- name,插件名
- description,插件描述
- filename,插件的文件名
- length,插件所处理的MIME类型数量
//由于实现方法不同,所以IE和非IE的浏览器检测方法也不同function checkPlugin(name){ //对于非IE浏览器 name = name.toLowerCase(); //将传入参数转小写,规范化 for (var i=0;i<navigator.plugins.length;i++){ if(navigator.plugins[i].name.toLowerCase().indexOf(name) > -1){ return true;//indexOf大于-1表示plugins中存在给定的name } } return false;}function checkIEPlugin(name){ //对于IE浏览器 try{//尝试创建该name的对象 new ActivityXObject(name); return true;//创建成功则说明有该插件,返回true } catch(ex){ return false; }}function hasPlugin(name){//兼容所有浏览器的检测方法 var result = checkPlugin(name); //先假定为非IE浏览器,检测一次 if(!result){ //如果为false则可能是不存在该插件或者当前浏览器为IE result = checkIEPlugin(name); //按照IE浏览器的方法,检测一次 } return result; //返回结果}
4 screen对象
用于表明客户端的能力,包括浏览器外部显示器的信息,像素宽高、DPI等值。
5 history对象
history对象保存了用户上网的历史记录。go()
方法可以在用户的历史记录中任意跳转。
参数为正数表示前进,负数表示后退,为字符串则跳转到包含这个字符串,且离当前页最近的一个位置。其简化版是back()和forward()。
- JavaScript学习笔记(7)
- JavaScript学习笔记7
- JavaScript学习笔记7
- JavaScript学习笔记7(.net)
- JavaScript学习笔记(三)---JavaScript对象
- javascript学习笔记(一)--初识javascript
- JavaScript 学习笔记(一)
- JavaScript 学习笔记(二)
- JavaScript学习笔记(一)
- JavaScript 学习笔记(一)
- JavaScript 学习笔记(一)
- javascript 学习笔记(1)
- javascript 学习笔记(2)
- javascript 学习笔记(3)
- javascript 学习笔记(4)
- javascript 学习笔记(6)
- JavaScript学习笔记(二)
- JavaScript学习笔记(三)
- java操作excel(jxl)
- 渗透测试:sqlmap伪静态注入与携带cookie登录认证注入
- rsyslog 解决日志截断不读取问题
- Scala 中不带括号的函数与带括号函数的差别
- OSG学习笔记15-OSG中对事件的处理
- JavaScript学习笔记(7)
- WSGI
- web前端-CSS Align(对齐) -020
- 社会契约论和先贤祠
- hihoCoder #1014 : Trie树
- ACdream 1738 世风日下的哗啦啦族I(分块)
- PMP在线考试
- 120. Triangle
- JavaSE IO流(2) 字节流