JAVASCRIPT高程笔记-------第八章 浏览器BOM对象
8.1 window对象--表示一个浏览器的实例
在全局作用域中声明的任何变量、函数都会变成window对象的属性和方法,与之直接定义window对象的属性的区别是 window.xxx 可以通过delete操作符删除 而全局中定义的无法通过delete操作符 删除!
浏览器窗口位置以及关系 --如果页面包含框架那么每个框架都拥有自己的window对象,并且保存在frames集合中,在frames集合中可以通过索引(从0开始,由左至右,由上到下)或者框架的名称来访问相应的window对象,每个window对象都有name属性包含框架的名称
top对象-------始终指向最高(最外)层的框架,在包含框架的页面中 top逼window对象更适合引用
parent对象 ---始终指向当前框架的直接上层框架,如果不包含框架 parent对象一定等于top对象 (此时它们都等于window对象)!
window.open()方法 既可以导航到一个特定的URL,也可以打开一个新的浏览器窗口,方法接收四个参数,要加载的URL,窗口目标,一个特性字符串,表示新页面是否取代浏览器历史记录中当前的加载页面的布尔值!
如果传递了第二个参数,而且该参数是已有窗口或者框架的名称,那么就会在指定的窗口或框架内加载指定的URL 等同于 <a href="xxxx" target="xxxx">
如果第二个参数并不是一个已经存在的窗口或者框架,那么该方法根据第三个参数字符串创建一个新的窗口或者标签页,第三个参数为空则创建全部为默认设置的浏览器窗口
此方法会返回一个指向新窗口的引用,同时 调用新窗口的window.openr属性可以获取父窗口的引用,在IE8与谷歌浏览器中 会以独立进程中运行每个标签页,如果需要与新打开的窗口或者标签页面通讯,那么新标签页就不能独立运行在进程中
在谷歌中 将新创建的openr属性设置为null 则表示 不保持通讯,实例
var baidu = window.open("wwww.baidu.com");
baidu.opener = null;
安全限制-检测浏览器是否被禁用或者屏蔽弹出窗口 ---以下代码可以检测出是否被屏蔽,但并不阻止浏览器告知用户被屏蔽的弹出窗口有关消息
var blocked = false;
try{
var wroxWin = window.open("http://wwww.baidu.com","_blank")
if(wroxWin == null){
console.log(blocked);
blocked = true;
}
}catch(ex){
console.log(blocked);
blocked = true;
} if(blocked){
console.log("aaaaaa");
}
8.1.6 间歇调用和超时调用
js是单线程语言,但它允许通过设置超时值和间歇值来调度代码在特定的时刻执行
window.setTimeout("",1000) 指定在1秒后执行第一个参数的js代码, 与eval() 函数中使用字符串一样,注意 第二个参数虽然为指定的时刻,但并不保证在指定时间后执行,因为js是单线程执行,一定时间内只能执行一段代码,因此js会将此代码放入任务队列中,如果任务队列为空则就立即执行,若任务队列存在其他未执行完成的代码,那么就会在其他代码执行后再执行window.setTimeout()中的代码 ,此方法会返回一个数值ID作为方法的引用 ,可以在clearTimeout(xxx) 传入此数值ID 进行取消
setInterval("xxx",1000) 此方法指间隔1秒后重新调用执行第一个参数的js代码,与超时调用一致 ,也会返回数值ID作为对它的引用 ,通过clearInteval()方法进行取消间歇调用
8.1.7 系统对话框 alert(),confirm(),promt() 可以调用系统对话框向用户传递消息 ,它们的显示效果依赖于系统或者浏览器本身的设置
alert();用于向用户提示消息,
comfirm() 用于提示消息后还接收用户操作的返回值,可以根据用户操作的不同而执行不同的代码,
promt(),提示一段传入的字符串,并且在提示框上有一个文本输入框,用户接收用户输入的内容
8.2 location对象 ----既是window对象的属性,又是document对象的属性
位置操作 location.assign(URL) ,此时会在当前的浏览器页面内打开新的url并且生成历史记录
window.location = “xxxxx” ; location.href = “xxxxx” 此处代码执行后也是通过location.assign() 方法进行打开新的Url
另外修改location对象的 port,host. 等属性也会改变当前浏览器加载的页面内容 (hash属性除外) 并且生成历史记录
location.replace() 也会加载新URL的内容,但是不会生成历史记录,因此不能使用浏览器的前进后退
location.reload() 方法页面重新加载,此方法接收一个布尔参数,表示是否从缓存中加载,如果true 则重新请求服务器进行加载, 不传递参数则浏览器以最有效的方式加载(可能冲缓存中加载)
8.3 navigator 对象 ----识别客户端浏览器的标准对象
8.3.1检测插件 -- 检测浏览器中是否安装了指定的插件(非IE)可以通过plugins数组,该数组的每一项都包含以下属性,name: 插件名字 ,description:插件描述,filename:插件的文件名,length :插件所处理的MIME类型数量
//检测是否包含某个插件 IE无效
function hasPlugin(name){
name = name.toLowerCase();
for(var i=0; i<navigator.plugins.length; i++){
if(navigator.plugins[i].name.toLowerCase().indexOf(name) > -1){
return true;
}
}
return false;
} console.log(hasPlugin("flash")); //遍历当前浏览器所有的插件
(function hasPlugin2(){
for(var i=0; i<navigator.plugins.length; i++){
console.log(navigator.plugins[i].filename);
}
})();
IE中的插件检测,由于IE是采用com组件的方式实现插件,因此需要指定插件的唯一标识符, 例如 flash的标识符为“ShockwaveFlash.ShockwaveFlash”
function hasIEplugin(name){
try{
new ActiveXObject(name);
return true;
} catch (ex){
return false;
}
}
console.log(hasIEplugin("ShockwaveFlash.ShockwaveFlash"));
history对象 --保存着用户浏览器的历史记录,从窗口被打开的那一刻算起,每个浏览器窗口,标签页,每个框架都有自己的history
go() 方法 接收一个数字参数,负数表示向后 正数表示向前 类似于浏览器的前进后退; 也可以接收一个字符串参数,那么浏览器会跳转至历史记录中包含此字符串第一个位置,可能前进也可能后退,如果没找到包含此字符串的历史记录则什么都不会做
history.black()后退 history.forward()前进
JAVASCRIPT高程笔记-------第八章 浏览器BOM对象的更多相关文章
- JavaScript学习笔记(十四)——对象
在学习廖雪峰前辈的JavaScript教程中,遇到了一些需要注意的点,因此作为学习笔记列出来,提醒自己注意! 如果大家有需要,欢迎访问前辈的博客https://www.liaoxuefeng.com/ ...
- JAVASCRIPT高程笔记-------第十章 DOM对象
10.1.1 node类型 --除IE外 所有浏览器都可以访问到这个类型 :JS中所有的节点类型都继承自Node类型 nodeName 与nodeValue 如果是一个元素 那么nodeName中保 ...
- BOM(JavaScript高程笔记)
再次编辑于20160115 一.window对象 双重角色 JS访问浏览器窗口的接口 ECAMAscript规定的Global对象 1.全局作用域 所有在全局作用域中声明的变量.函数都会变成windo ...
- JAVASCRIPT高程笔记-------第五章 引用类型
一.Object类型 1.1创建方式 ①new关键字 : var person = new Oject(); ②给定直接量: var person = { name : "zhangsan& ...
- JavaScript学习笔记(十五)——对象之Date,RegExp
在学习廖雪峰前辈的JavaScript教程中,遇到了一些需要注意的点,因此作为学习笔记列出来,提醒自己注意! 如果大家有需要,欢迎访问前辈的博客https://www.liaoxuefeng.com/ ...
- JavaScript基础笔记(六)BOM
BOM 一.Window对象 在浏览器中window对象即是全局对象,又是JavaScript访问浏览器的一个接口. 定义全局变量和定义window对象还是有差别的,全局变量不能通过delete操作符 ...
- DOM(JavaScript高程笔记)
一.节点层次 1.Node类型 if (someNode.nodeType == 1){ // 适用于所有浏览器 alert("Node is an element."); } N ...
- javaScript高程笔记--最佳实践
1.可维护性 <1>什么是可维护的代码 (1)可理解性 (2)直观性 (3)可适应性 (4)可扩展性 (5)可调试性 <2>代码约定 (1)可读性---适当的进行注释[函数和方 ...
- JAVASCRIPT高程笔记-------JSON与AJAX
json对象——语法 简单值:与JS相同语法,可以是字符串,数值,布尔值,null:但不支持undefined 对象: 复杂数据类型,表示一组有序的键值对,键值对的值可以是简单数据,也可以是复杂数据 ...
随机推荐
- C# datatable增加行(datarow)数据为另一个datatable中某行
两个表A和B,两表结构相同.现在需要将A表中部分行拷贝到B表中,直接用 DataTableB.rows.add(dataTableA.rows[0]) 这样的方法式会报"row已经属于A表& ...
- SSH连接Linux的Server超时
SSH连接Linux的Server超时 http://blog.csdn.net/cheng830306/article/details/21796865
- freemarker自己定义标签报错(七)
1.错误描写叙述 六月 09, 2014 11:11:09 下午 freemarker.log.JDK14LoggerFactory$JDK14Logger error 严重: Template pr ...
- keepalived.conf 配置文件小结
vrrp_script vs_mysql_82 { script "/etc/keepalived/checkMySQL.py -h 192.168.11.82 -P 3306&qu ...
- jsvc 启动java 在linux下的实现原理
http://blog.csdn.net/raintungli/article/details/8265009 JSVC:http://commons.apache.org/proper/common ...
- 三星语音AI助理背后的华人身影—73岁科技人三度创业成功(孙子兵法:道、天、地、将、法)
我绝对不当老二,也不当老大,我要当霸主!”说这句话的是富迪科技董事长黄炎松.他还把“独霸”当作公司愿景宣言,大剌剌的放在美国总公司进门最显眼的墙上. 集微网消息,据台湾商业周刊报道,黄炎松,是台湾 ...
- 【网络】无法解析服务器的DNS地址?;能登陆QQ,无法打开网页
1. 无法解析服务器的DNS地址 手动设置 DNS(域名解析服务器) 8.8.8.8 114.114.114.114 清除浏览器缓存: 重启主机: 无法解析服务器的DNS地址?DNS解析错误怎么办? ...
- iPhone6/6Plus下app状态栏内容放大问题处理
分为兼容模式和高分辨率模式. 兼容模式 当你的 app 没有提供 3x 的 LaunchImage 时,系统默认进入兼容模式,大屏幕一切按照 320 宽度渲染,屏幕宽度返回 320:然后等比例拉伸到大 ...
- [GeekBand] C++ 内存分布—— new和delete重载的实现及分析
本文参考文献:GeekBand课堂内容,授课老师:侯捷 :深度探索C++对象模型(侯捷译) :网络资料: http://www.leavesite.com/geekband-cpp-5.html ht ...
- Linux之定时任务Crond介绍
Linux之定时任务 定时任务Crond介绍 Crond是linux系统中用来定期执行命令/脚本或指定程序任务的一种服务或软件,一般情况下,我们安装完Centos5/6 linux操作系统之后,默认便 ...