一、window

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

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

有点区别在于,全局变量不能用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;
}

读javascript高级程序设计09-BOM的更多相关文章

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

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

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

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

  3. 读javascript高级程序设计08-引用类型之Global、Math、String

    一.Global 所有在全局作用域定义的属性和方法,都属于Global对象. 1.URI编码: encodeURI():主要用于对整个URI编码.它不会对本身属于URI的特殊字符进行编码. encod ...

  4. 读javascript高级程序设计01-基本概念、数据类型、函数

    一. javascript构成 1.javascript实现由三部分组成: ECMAScript:核心语言功能 DOM:文档对象模型,提供访问和操作网页内容的方法和接口 BOM:浏览器对象模型,提供与 ...

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

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

  6. 读javascript高级程序设计17-在线检测,cookie,子cookie

    一.在线状态检测 开发离线应用时,往往在离线状态时把数据存在本地,而在联机状态时再把数据发送到服务器.html5提供了检测在线状态的方法:navigator.onLine和online/offline ...

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

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

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

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

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

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

  10. 读javascript高级程序设计14-错误处理与调试

    一  错误类型 ECMA规定了常见的7种错误类型: Error: 基类型.其他常见的错误类型都继承自该类型,一般供开发人员抛出自定义错误. EvalError:该类型会在eval()函数使用异常时被抛 ...

随机推荐

  1. [ruby]Windows Ruby安装步骤

    Windows Ruby 安装步骤 准备工作: 1.http://rubyinstaller.org/downloads/ 下载选择Ruby 1.9.3 2.http://rubyinstaller. ...

  2. Orchard part8

    http://skywalkersoftwaredevelopment.net/blog/writing-an-orchard-webshop-module-from-scratch-part-8 定 ...

  3. 机器人操作系统(ROS)教程4:ROS的框架【转】

    转自:http://www.arduino.cn/thread-11351-1-1.html 在进行ROS的代码开发前,有必要了解一些ROS的概念.首先,ROS的系统代码分为两部分:main和univ ...

  4. 游戏引擎PushButtonEngine简介

    PushButtonEngine是一个开源的模块化游戏引擎,你可以通过https://github.com/PushButtonLabs/PushButtonEngine得到其代码和相关文档.下面我将 ...

  5. IIS 7 应用程序池自动回收关闭的解决方案

    如果你正在做ASP.NET,那肯定会用到IIS 如果你想在ASP.NET Application中加入某个定时任务,那想必一定是用一个线程在不停地做定时计算 那假设我们在自己的ASP.NET应用程序中 ...

  6. JS加密库Crypto-JS SEA加密

    http://www.seacha.com/tools/aes.html 在该网站测试 CryptoJS有很多加密方式网上查阅后有 CryptoJS (crypto.js) 为 JavaScript ...

  7. IntelliJ IDEA 14和Maven创建java web项目

    安装Maven 下载安装 去maven官网下载最新版. 解压到安装目录. 配置 右键桌面的计算机图标,属性–>高级系统设置–>环境变量,添加M2_HOME的环境变量,然后将该变量加入的PA ...

  8. 网页设计中常用的19个Web安全字体

    来自http://www.jb51.net 在Web编码中,CSS默认应用的Web字体是有限的,虽然在新版本的CSS3,我们可以通过新增的@font-face属性来引入特殊的浏览器加载字体.但多数情况 ...

  9. Linux常用调优配置

    cenos 6.5 文件句柄和网络端口 修改系统所有进程可用句柄数,vi /etc/sysctl.conf fs.file-max=655360net.ipv4.ip_local_port_range ...

  10. 理解GRUB2工作原理及配置选项与方法

    GRUB2是借鉴GRUB改写到更加安全强大到多系统引导程序,现在大部分较新的Linux发行版都是使用GRUB2作为引导程序的.GRUB2采用了模块化设计,使得GRUB2核心更加精炼,使用更加灵活,同时 ...