一、window

1.在全局作用域中定义的变量和函数会被归在window对象。

var a=1,b=2;
function add(a,b){
return a+b;
}
console.log(window.a);//1
console.log(window.add(a,b));//3

有点区别在于,全局变量不能用delete删除,而直接在window对象定义的属性可以用delete删除。

2.计算窗口位置

var leftpos=typeof window.screenLeft=="number"?window.screenLeft:window.screenX;
var toppos=typeof window.screenTop=="number"?window.screenTop:window.screenY;

3.间接性调用

①setInterval方法:

var i=1,max=10;function f(){if(i==max){clearInterval(test);console.log('Done');}else{console.log(i);i++;}}
var test=setInterval(f,1000);

②用setTimeout方法实现:

var i=1,max=10;function f(){if(i==max){console.log('Done');}else{console.log(i);setTimeout(f,1000);i++;}}
var test=setTimeout(f,1000);

使用超时调用模拟间歇调用是一种最佳实践。

4.系统对话框

prompt:

var result=prompt("your name?");
if(result!=null){
alert('hello,'+result);
}

二、location对象

1.location对象属性:

window.location和document.location指向同一个对象。

每次修改location的属性(hash除外),都会以新URL重新加载页面。

location对象几个常用的属性实例:

//url为:http://www.cnblogs.com/janes/p/3829648.html
//hash:用于锚点定位
location.hash="#author_profile_info";//定位到头像
//hostname:不带端口号的服务器名称
location.hostname;//"www.cnblogs.com"
//href:当前页面的完整url
location.href;//"http://www.cnblogs.com/janes/p/3829648.html#author_profile_info"
//pathname:url中的路径名或者文件名
location.pathname;//"/janes/p/3829648.html"
//search:url中的查询字符串,以问号开头
location.search;//""

2. 获取查询字符串参数:

function getQueryArgs(){var qs=location.search.length>0?location.search.substring(1):"";var result={};var items=qs.length?qs.split('&'):[];var item=null,name=null,value=null;for(var i=0;i<items.length;i++){item=items[i].split('=');name=decodeURIComponent(item[0]);value=decodeURIComponent(item[1]);if(name.length>0){result[name]=value;}}return result;
}
var r=getQueryArgs();

3.修改url:

location.href="http://www.baidu.com";//打开新URL之后可以通过浏览器后退回到前一页面
location.replace("http://www.baidu.com");//打开新URL之后在某些浏览器下不能通过后退回到前一页面

重新加载页面:

location.reload():可能从缓存加载
location.reload(true):重新从服务器加载

三、navigator对象

1.常用属性

navigator.cookieEnabled:浏览器cookie是否可用
navigator.userAgent:浏览器的用户代理字符串;

2.检测插件:检测浏览器中是否安装了某个插件。

非IE浏览器:使用plugins数组,判断插件名称在name属性中是否存在。

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;
}//调用
hasPlugin('Flash');

IE浏览器:使用ActiveObject对象,并尝试创建插件的一个实例。

function hasIePlugin(name) {try {new ActiveXObject(name);return true;} catch(ex) {return false;}
}
//调用
hasIePlugin('ShockWaveFlash.ShockWaveFlash');

由于两种检测方式差异较大,所以一般针对每个插件写单独的检测方法:

function hasFlash() {var result = hasPlugin('flash');if (!result) {result = hasIePlugin('ShockWaveFlash.ShockWaveFlash');}return result;
}
    本文转自 陈敬(Cathy) 博客园博客,原文链接:http://www.cnblogs.com/janes/p/3885183.html,如需转载请自行联系原作者

读javascript高级程序设计09-BOM相关推荐

  1. 读javascript高级程序设计-目录

    javascript高级编程读书笔记系列,也是本砖头书.感觉js是一种很好上手的语言,不过本书细细读来发现了很多之前不了解的细节,受益良多.<br/> 本笔记是为了方便日后查阅,仅作学习交 ...

  2. 读javascript高级程序设计10-DOM

    一.节点关系 元素的childNodes属性来表示其所有子节点,它是一个NodeList对象,会随着DOM结构的变化动态变化. hasChildNodes():是否有子节点. var headline ...

  3. javascript高级程序设计之BOM

    1.window对象 bom的核心对象是window,表示浏览器的一个实例.在浏览器中,window对象有双重角色,既是通过javascript访问浏览器窗口的一个接口,又是ECMAScript规定的 ...

  4. 读javascript高级程序设计15-Ajax,CORS,JSONP,Img Ping

    平时用惯了jQuery.ajax之类的方法,却时常忽略了它背后的实现,本文是学习了AJAX基础及几种跨域解决方案之后的一些收获. 一.AJAX--XMLHttpRequest 谈起Ajax我们都很熟悉 ...

  5. 读javascript高级程序设计13-JSON

    JSON是一个轻量级的数据格式,可以简化表示数据结构的工作量.在实际工作中,我们经常用它来传递数据,不过对于其使用的一些细节还是需要注意的.在ECMAScript5中定义了原生的JSON对象,可以用来 ...

  6. 读javascript高级程序设计02-变量作用域

    一. 延长作用域链 有些语句可以在作用域前端临时增加一个变量对象,该变量对象在代码执行完成后会被移除. ①with语句延长作用域. function buildUrl(){ var qs=" ...

  7. 读javascript高级程序设计12-HTML5脚本编程

    一.跨文档消息传递(XDM) 1.发送消息 postMessage(msg,domain)用于发送跨文档消息.第一个参数是要传递的消息内容,第二个参数表示接收方来自哪个域.第二个参数有助于提高安全性, ...

  8. 读javascript高级程序设计03-函数表达式、闭包、私有变量

    一.函数声明和函数表达式 定义函数有两种方式:函数声明和函数表达式.它们之间一个重要的区别是函数提升. 1.函数声明会进行函数提升,所以函数调用在函数声明之前也不会报错: test(); functi ...

  9. 读javascript高级程序设计11-事件

    一.事件流 事件流指从页面中接收事件的顺序. 1.事件冒泡(常用) IE中采用的事件流是事件冒泡,先从具体的接收元素,然后逐步向上传播到不具体的元素. 2.事件捕获(少用) Netscapte采用事件 ...

  10. 读javascript高级程序设计06-面向对象之继承

    原型链是实现继承的主要方法,通过原型能让一个引用类型继承另一个引用类型. 1.原型链实现继承 function SuperType(){ this.superprop=1; } SuperType.p ...

最新文章

  1. 人脸关键点 PFLD
  2. 32时间片轮转_系统时间
  3. Linux数据报文接收发送总结7
  4. 通用makefile
  5. spring boot actuator工作原理之http服务暴露源码分析
  6. 是时候该搭建自己的私有云盘了——nextcloud 12
  7. electron 打开调试_构建基于 iOS 模拟器的前端调试方案
  8. window打开IIS
  9. python对浮点类型的数据进行格式化_(自用)Python Log2 数据类型、字符编码、格式化...
  10. 160个破解练习之CrackMe 006
  11. 解决octavia failed to run
  12. php interface类,类相关的关键字 - interface
  13. html + js实现马赛克画板
  14. 计算机毕业设计Python+uniapp学生考勤系统小程序(小程序+源码+LW)
  15. Android 如何获取手机内存大小,内置存储空间大小
  16. 如何打造高绩效的研发团队
  17. XDOJ指针 字符统计
  18. 向工程腐化开炮 | 治理思路全解
  19. 电力电子技术笔记(2)——电力二极管
  20. Connection must be valid and open.

热门文章

  1. HTML中的 后代选择器 和 子代选择器
  2. MD5的标准幻数的不同写法
  3. 复杂网络 社交网络_社交网络:不是主流
  4. Android 面部识别之二(调用开源面部识别算法seetaface检测)
  5. shellcode加载器--从入门到放弃
  6. 谷歌浏览器将在2023年2月7日起停止支持Windows 7和8.1版
  7. 计算机管理员注销,肿么注销计算机管理员
  8. Win11系统注销在哪?Win11系统注销的方法
  9. 2021年UI/UE设计师学习最新线路规划
  10. 三顶红帽子和两顶白(蓝)帽子。