一、location对象
location对象:提供了与当前窗口中加载的文档有关的信息,还提供了一些导航功能。
特殊:location对象既是window对象的属性,也是document对象的属性。
location 对象的所有属性:
- href
"http:/www.wrox.com"
返回当前加载页面的完整URL。location对象的toString()方法也返回这个值 - protocol
"http:"
返回页面使用的协议。通常是http:或https: - port
"8080"
返回URL中指定的端口号。如果URL中不包含端口号,则这个属性返回空字符串 - host
"www.wrox.com:80"
返回服务器名称和端口号(如果有) - hostname
"www.wrox.com"
返回不带端口号的服务器名称 - pathname
"/WileyCDA/"
返回URL中的目录和(或)文件名 - search
"?q=javascript"
返回URL的查询字符串。这个字符串以问号开头 - hash
"#contents"
返回URL中的hash(#号后跟零或多个字符),如果URL中不包含散列,则返回空字符串
1. 查询字符串参数
location.search 返回从问号到 URL 末尾的所有内容,但没有办法逐个访问其中的每个查询字符串参数。
以下方法,解析查询字符串,返回包含所有参数的一个对象:
function getQueryStringArgs(){
//取得查询字符串并去掉开头的问号
var qs = (location.search.length > 0 ? location.search.substring(1) : ""),
//保存数据的对象
args = {},
//取得每一项
items = qs.length ? qs.split("&") : [],
item = null,
name = null,
value = null,
//在 for 循环中使用
i = 0,
len = items.length;
//逐个将每一项添加到 args 对象中
for (i=0; i < len; i++){
item = items[i].split("=");
name = decodeURIComponent(item[0]);
value = decodeURIComponent(item[1]);
if (name.length) {
args[name] = value;
}
}
return args;
}
2. 位置操作
- location.assign(URL)
页面跳转,并生成一条历史记录
location.href = URL (最常用) 或 window.location = URL,也会调用 assign()方法。
修改 location 对象的其他属性 (如hash、search、hostname、pathname、port )也可以改变当前加载的页面。
每次修改 location 的属性 (hash 除外),页面都会以新 URL 重新加载。
当通过上述任何一种方式修改 URL 之后,浏览器的历史记录中就会生成一条新记录,因此用户通过单击“后退”按钮都会导航到前一个页面。
-
replace(URL)
页面跳转,不会生成新的历史记录 -
reload(布尔值)
重新加载当前页面
参数为true,强制从服务器重新加载;参数为false,从浏览器缓存中重新加载。
二、navigator 对象
navigator对象:识别客户端浏览器。
每个浏览器中的 navigator 对象都有一套自己的属性。
例如:userAgent - 浏览器的用户代理字符串
这些属性通常用于检测显示网页的浏览器类型。
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;
}
//检测 Flash 参数:插件名
alert(hasPlugin("Flash"));
- IE 浏览器
使用专有的 ActiveXObject 类型,并尝试创建一个特定插件的实例。
IE 是以 COM对象的方式实现插件的,而 COM对象使用唯一标识符来标识。
//检测 IE 中的插件
function hasIEPlugin(name){
try {
new ActiveXObject(name);
return true;
} catch (ex){
return false;
}
}
//检测 Flash 参数:COM标识符
alert(hasIEPlugin("ShockwaveFlash.ShockwaveFlash"));
典型做法:针对每个插件分别创建检测函数
//检测所有浏览器中的 Flash
function hasFlash(){
var result = hasPlugin("Flash");
if (!result){
result = hasIEPlugin("ShockwaveFlash.ShockwaveFlash");
}
return result;
}
//检测 Flash
alert(hasFlash());
2. 注册处理程序
registerContentHandler() 和 registerProtocolHandler()
让一个站点指明它可以处理特定类型的信息。
registerContentHandler(要处理的MIME类型,可以处理该MIME类型的页面的URL,应用程序的名称)
例如:将一个站点注册为处理RSS源的处理程序
navigator.registerContentHandler("application/rss+xml", "http://www.somereader.com?feed=%s", "Some Reader");
registerProtocolHandler(要处理的协议,处理该协议的页面的URL,应用程序的名称)
例如:将一个应用程序注册为默认的邮件客户端
navigator.registerProtocolHandler("mailto", "http://www.somemailclient.com?cmd=%s", "Some Mail Client");
三、screen 对象
screen 对象基本上只用来表明客户端的能力,其中包括浏览器窗口外部的显示器的信息,如像素宽度和高度等。
每个浏览器中的 screen 对象都包含着各不相同的属性。
一般只用于站点分析,用处不大。
四、history 对象
history 对象:保存着用户上网的历史记录。
每个浏览器窗口、每个标签页乃至每个框架,都有自己的 history 对象与特定的 window 对象关联。
-
go()
在用户的历史记录中跳转,可以向后也可以向前。
参数是整数值:向后或向前跳转的页面数history.go(-1);
参数是字符串参数:跳转到历史记录中包含该字符串的最近一个位置history.go("wrox.com");
-
back()
后退history.back();
-
forward()
前进history.forward();
-
history.length 属性
保存着历史记录的数量,包括所有向后和向前的记录。
history.length == 0 --> 用户打开窗口后的第一个页面
上一篇:18-JavaScript高级程序设计-window对象
下一篇:20-JavaScript高级程序设计-客户端检测