Location
Windows对象的location属性引用的是Location对象,它表示该窗口中当前显示的文档的URL,并定义了方法来使窗口载入新的文档。其包含的属性被称为“URL分解”属性,同时被Link对象支持。
14.2.1解析URL
/*
*提取URL的搜索字符串中的参数
*这个函数用来解析来自URL的查询串中的name=value参数对
*它将name=value对存储在一个对象的属性中,并返回该对象
*/
function urlArgs() {
var args = {}
var query = location.search.substring(1);
var pairs = query.split("&");
for(var i = 0; i < pairs.length; i++) {
var pos = pairs[i].indexOf('=');
if (pos == -1) continue;
var name = pairs[i].substring(0,pos);
var value = pairs[i].substring(pos+1);
value = decodeURLComponent(value);
args[name] = value;
}
return args;
}
14.2.2载入新的文档
//如果检查到用户的浏览器不支持某些特征来显示功能齐全的版本,可以用location.replace()来载入静态的HTML版本
//如果浏览器不支持XMLHttpRequest对象
//则将其重定向到一个不需要Ajax的静态页面
if(!XMLHttpRequest) location.replace("staticpage.html");
Location对象有三种方法可以使窗口载入并显示你指定的URL中的文档。
- assign() 使窗口载入并显示你指定的URL中的文档
- replace() 它在载入新文档之前会从浏览历史中把当前文档删除
- reload() 让浏览器重新载入当前文档
更传统的方法:
- 直接把新的URL赋值给location属性:
location = "http://www.baidu.com";
- 把相对URL赋值给location,它们会相对当前URL进行解析:
location = "page2.html"; //纯粹的片段标识符是相对URL的一种类型,它不会让浏览器载入新文档,但会让它滚动到文档的某个位置。#top标识符是个特殊的例子,如果文档中没有元素的ID是"top",它会让浏览器跳到文档开始处。 location = "#top";
- Location对象的URL分解属性是可写的,对它们重新赋值会改变URL的位置,并且导致浏览器载入一个新的文档(如果改变的是hash属性,则在当前文档中进行跳转):
location.search = "?page=" + (pagenum+1);
本作品采用《CC 协议》,转载必须注明作者和本文链接