History对象与Location对象

473 阅读3分钟

这是我参与11月更文挑战的第23天,活动详情查看:2021最后一次更文挑战

History对象是什么

History对象包含用户在浏览器中访问过的URL(网址)。

  • length属性:History对象的length属性可以获取用户在浏览器中访问网址的数量。
console.log('用户访问的网址数量为: '+history.length);
  • History对象还提供了以下方法实现浏览器前进和后退功能。
方法名称描述
forward()实现跳转下一个页面,作用和浏览器的前进搜钮—样
back()实现转跳到上一个页面,作用和浏览器的回退按钮—样
go()实现跳转到指定的页面。如果为负数表示后退,如果为正数表示前进

## Location对象是什么

Location对象包含了浏览器的地址栏中的信息,该对象主要用于获取和设置地址。

Location对象很特别,因为该对象既是Window对象的属性,又是Document对象的属性。

console.log(window.location == document.location);/ true

Location对象不仅存储了地址栏中的信息,还提供了解析功能。可以通过不同的Location对象的属性 访问不同的地址栏中的信息。

属性名称描述
host返回服务器名称和端口号
hostname返回服务器名称
href返回当前加载页面的完整URL
pathnarn返回当前URL中的目录和文件名
port返回当前URL中的端号
protocol返回页面使用的网络协议

获取和设置地址

通过可以获取和设置浏览器的地址栏中的地址信息。

//获取当前浏览器窗口的地址栏信息
console.log('Location对象为: '+window.locatign);
//设置当前浏览器窗口的地址栏信息
window.location = 'http://www.baidu.com';

上述功能同样可以通过Location对象的href属性完成。

//获取当前浏览器窗口的地址栏信息
console.log("Location对象的href属性为: '+location.href);
//设置当前浏览器窗口的地址栏信息
location.href = 'http://www.baidu.com';

查询字符串参数

Location对象提供了search属性,用于返回URL包含的查询字符串。

//取得查询字符串并去掉开头的问号
var qs = location.search.length > 0 ? location.search.substring(1): ";

Location对象的方法

Location对象提供了以下方法:

方法名称描述
assign()载入—个新的文档,作用和直接修改Location相同
reload()重新载入当前文档,作用和刷新按钮一样。参数为true时,则会强制清空缓存刷新页面
replace()用新的文档替换当前文档(不会生成历史记录,不能使用回退按钮回退)

最后有两个查看用户浏览器产品和操作系统的小demo

用户的浏览器产品

通过userAgent属性获取用户当前使用的浏览器产品,提供浏览器兼容解决方案。

 var ua = navigator.userAgent;
 if (/firefox/i.test(ua)){
     console.log('当前使用的是Firefox浏览器');
 }else if(/chrome/i.test(ua)){
     console.log('当前使用的是Chrome浏览器')
 }else if(/Safari/i.test(ua)){
     console.log('当前使用的是Safari浏览器')
 }else if(/msie/i.test(ua)){
     console.log('当前使用的是IE 11之前版本的浏览器')
 }else if('ActiveXObject'in window ){
     console.log('当前使用的是IE 11浏览器');
 }

用户的操作系统信息

通过usecAgent属性获取用户当前使用的操作系统信息。

 var ua = navigator.userAgent;
 if (/Windows/i.test(ua)){
     console.log('当前使用的是Windows操作系统');
 }else if(/mac/i.test(ua)){
     console.log('当前使用的是Mac操作系统')
 }else if(/android/i.test(ua)){
     console.log('当前使用的是Android操作系统')
 }else if(/iphone/i.test(ua)){
     console.log('当前使用的是iphone操作系统')
 }