Javascript-12-BOM-2

location对象

location对象是最有用的BOM对象之一,它提供了与当前窗口加载的文档有关的信息,还提供了一些导航功能。location对象既是window对象的属性,也是document对象的属性;换句话说,window.location和document.location引用的是同一个对象。location对象的用处不只表现在它保存着当前文档的信息,还表现在它将URL解析为独立的片段,让我们可以通过不同的属性访问这些片段。下表列出了location对象的所有属性(省略了每个属性前面的location前缀)。

查询字符串参数

虽然可以通过location.search得到从问号到URL末尾的所有内容,但却没办法逐个访问,因此可以像下面这样创建一个函数,用以解析每个字符串,然后返回包含所有参数的一个对象

function getQueryStringArgs() {
    // 取得查询字符串并去掉开头的问号
    var qs = location.search.length>0? location.search.substring(1):"";
    // 保存数据的对象
    var args = {};
    // 取得每一项
    var items = qs.length?qs.split("&"):[];
    var item = null;
    var name = null;
    var value = null;

    for (var i = 0; i < items.length; i++) {
        item = items[i].split("=");
        name = decodeURIComponent(item[0]);
        value = decodeURIComponent(items[1]);

        if (name.length) {
            args[name] = value;
        }
    }
}
位置操作
  • assign():立即打开新URL并在浏览器的历史记录中生成一条记录
  • replace():导航到新URL,但不会在历史记录中生成新纪录,即,用户不能返回到前一个页面
  • reload():重新加载当前显示的页面

navigator对象

navigator对象包含有关浏览器的信息,是识别客户端浏览器的事实标准。下表列出了存在于所有浏览器中的属性和方法,以及支持它们的浏览器版本。

表中的这些navigator对象的属性通常用于检测显示网页的浏览器类型。

检测插件

在非IE浏览器下检测插件(利用navigator.plugins数组进行检测)
navigator.plugins数组有如下属性:

  • name:插件的名字
  • description:插件的描述
  • filename:插件的文件名
  • length:插件所处理的MIME类型数量
    一般来说,name属性中会包含检测插件必需的所有信息,但有时候也不完全如此。在检测插件时,需要像下面这样循环迭代每个插件并将插件的name与给定的名字进行比较。
// 不支持IE
function hasPlugin(name) {
    name = name.toLowerCase();
    var pluginsArray = navigator.plugins;
    for (var i = 0, pluginLength = pluginsArray.length; i < pluginLength; i++) {
        if (pluginsArray[i].name.toLowerCase().indexOf(name) > -1) {
        return true;
        }
    }
    return false;
}
// 检测flash
hasPlugin("Flash");
// 检测QuickTime
hasPlugin("QuickTime")

检测IE中的插件比较麻烦,因为IE不支持Natscape式的插件。在IE中检测插件的唯一方式就是使用专有的ActiveXObject类型,并尝试创建一个特定插件的实例。IES是以COM对象的方式实现插件的,而COM对象使用唯一标识符来标识。因此,要想检查特定的插件,就必须知道其COM标识符。例如,Flash的标识符是ShockwaveFlash.ShockwaveFlash。知道唯一标识符后,就可以编写类似下面的函数来检测IE中是否安装相应的插件了。

// 检测IE中的插件
function hasIEPlugin(name) {
    try {
        new ActiveXObject(name);
        return true;
    } catch(e) {
        return false;
    }
}

鉴于检测这两种插件的方法差别太大,因此典型的做法是针对每个插件分别创建检测函数,而不是使用前面介绍的通用检测方法。

// 检测所有浏览器中的Flash
function hasFlash() {
    var resultFlag = hasPlugin("Flash");
    if (!resultFlag) {
        resultFlag = hasIEPlugin("ShockwaveFlash.ShockwaveFlash");
    }
    return resultFlag;
}

navigator.plugins.refresh():用于刷新最新安装插件plugins的集合
navigator.plugins.refresh(true):更新插件集合,以及重新加载包含插件集合的所有页面。

screen对象

screen对象基本上只用来标明客户端的能力,其中包括浏览器窗口外部的显示器的信息,如像素宽度和高度等。下表列出了所有属性及支持相应属性的浏览器。

属 性说 明IEFirefoxSafari/ChromeOpera
availHeight屏幕的像素高度减系统部件高度之后的值(只读)
availLeft未被系统部件占用的最左侧的像素值(只读)
availTop未被系统部件占用的最上方的像素值(只读)
availWidth屏幕的像素宽度减系统部件宽度之后的值(只读)
bufferDepth读、写用于呈现屏外位图的位数
colorDepth用于表现颜色的位数;多数系统都是32(只读)
deviceXDPI屏幕实际的水平DPI(只读)
deviceYDPI屏幕实际的垂直DPI(只读)
fontSmoothingEnabled表示是否启用了字体平滑(只读)
height屏幕的像素高度
left当前屏幕距左边的像素距离
logicalXDPI屏幕逻辑的水平DPI(只读)
logicalYDPI屏幕逻辑的垂直DPI(只读)
pixelDepth屏幕的位深(只读)
top当前屏幕距上边的像素距离
updateInterval读、写以毫秒表示的屏幕刷新时间间隔
width屏幕的像素宽度

hostory对象

history对象保存着用户上网的历史记录,从窗口被打开的那一刻算起。由于安全方面的考虑,开发人员无法得到用户浏览器的URL,但借由用户访问过的页面列表,可以在不知道实际URL的情况下实现后退和前进。

使用go()方法可以在用户的历史记录中任意跳转。这个方法接收一个参数,表示向后或向前跳转的页面数的一个整数值。负数表示向后跳转(类似于后退按钮),正数表示向前跳转(类似于前进按钮)

//后退一页
history.go(-1)
//前进一页
history.go(1);
//前进两页
history.go(2);

//刷新当前页面
history.go();
//刷新当前页面
history.go(0);

back()方法用于模仿浏览器的后退按钮,相当于history.go(-1)。

forward()方法用于模仿浏览器的前进按钮,相当于history.go(1)。

history.length属性保存着历史记录的URL数量。初始时,该值为1。如果当前窗口先后访问了三个网址,history.length属性等于3。

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

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值