19-JavaScript高级程序设计-location对象

一、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高级程序设计-客户端检测

全书整理版:《Javascript高级程序设计》第3版(总结版)


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值