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对象的更多相关文章

  1. JavaScript学习笔记(十四)——对象

    在学习廖雪峰前辈的JavaScript教程中,遇到了一些需要注意的点,因此作为学习笔记列出来,提醒自己注意! 如果大家有需要,欢迎访问前辈的博客https://www.liaoxuefeng.com/ ...

  2. JAVASCRIPT高程笔记-------第十章 DOM对象

    10.1.1 node类型 --除IE外 所有浏览器都可以访问到这个类型 :JS中所有的节点类型都继承自Node类型 nodeName 与nodeValue  如果是一个元素 那么nodeName中保 ...

  3. BOM(JavaScript高程笔记)

    再次编辑于20160115 一.window对象 双重角色 JS访问浏览器窗口的接口 ECAMAscript规定的Global对象 1.全局作用域 所有在全局作用域中声明的变量.函数都会变成windo ...

  4. JAVASCRIPT高程笔记-------第五章 引用类型

    一.Object类型 1.1创建方式 ①new关键字 : var person = new Oject(); ②给定直接量: var person = { name : "zhangsan& ...

  5. JavaScript学习笔记(十五)——对象之Date,RegExp

    在学习廖雪峰前辈的JavaScript教程中,遇到了一些需要注意的点,因此作为学习笔记列出来,提醒自己注意! 如果大家有需要,欢迎访问前辈的博客https://www.liaoxuefeng.com/ ...

  6. JavaScript基础笔记(六)BOM

    BOM 一.Window对象 在浏览器中window对象即是全局对象,又是JavaScript访问浏览器的一个接口. 定义全局变量和定义window对象还是有差别的,全局变量不能通过delete操作符 ...

  7. DOM(JavaScript高程笔记)

    一.节点层次 1.Node类型 if (someNode.nodeType == 1){ // 适用于所有浏览器 alert("Node is an element."); } N ...

  8. javaScript高程笔记--最佳实践

    1.可维护性 <1>什么是可维护的代码 (1)可理解性 (2)直观性 (3)可适应性 (4)可扩展性 (5)可调试性 <2>代码约定 (1)可读性---适当的进行注释[函数和方 ...

  9. JAVASCRIPT高程笔记-------JSON与AJAX

    json对象——语法 简单值:与JS相同语法,可以是字符串,数值,布尔值,null:但不支持undefined 对象: 复杂数据类型,表示一组有序的键值对,键值对的值可以是简单数据,也可以是复杂数据 ...

随机推荐

  1. html5+js压缩图片上传

    最近在折腾移动站的开发,涉及到了一个手机里面上传图片.于是经过N久的折腾,找到一个插件,用法如下: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 ...

  2. Tomcat生产中优化JVM的配置实例

    root 1208 1 0 11月25 ? 00:15:32 /home/root/jvm/jdk1.7.0_79/bin/java -Djava.util.logging.config.file=/ ...

  3. poj1007——DNA Sorting

    Description One measure of ``unsortedness'' in a sequence is the number of pairs of entries that are ...

  4. [React Router v4] Use the React Router v4 Link Component for Navigation Between Routes

    If you’ve created several Routes within your application, you will also want to be able to navigate ...

  5. 动态创建Fragment

    在android3.0之前.每创建一个界面就要新创建一个activity. 在3.0之后引入了Fragment.相当于一个轻量级的activity.不须要在清单文件配置. 先来看下怎样创建和使用Fra ...

  6. NSURLSession网络接口

    URLSession URLSession NSURLSession是iOS7中新的网络接口,与NSURLConnection是并列的. 当程序在前台时,NSURLSession与NSURLConne ...

  7. 对多线程java内存模型JMM

    多线程概念的引入体现了人类重新有效压力寨计算机.这是非常有必要的,由于所涉及的读数据的过程中的一般操作,如从磁盘.其他系统.数据库等,CPU计算速度和数据读取速度已经严重失衡.假设印刷过程中一个线程将 ...

  8. webrtc 它android与PC互通

    折腾了一个多星期,今天终将PC和android音频,视频全部打通. 到现在,android与android,pC与PC,android与PC之间已经解决了互通,的音频和视频是能够. 前段时间开了PC与 ...

  9. 要求两个异步任务都完成后, 才能回到主线程:dispatch_group_t

    需求:两个异步任务都完成后, 回到主线程 /** 1.下载图片1和图片2 2.将图片1和图片2合并成一张图片后显示到imageView上 思考: * 下载图片 : 子线程 * 等2张图片都下载完毕后, ...

  10. SQL生成n位随机字符串

    --1.随着newid() go --创建一个视图(因为不能在功能直接用于newid()) create view vnewid as select newid() N'MacoId'; go --创 ...