JavaScript BOM常用对象: history、location、navigator、event事件。 客户端存储技术

184 阅读3分钟

1.BOM常用对象:window、screen、history、location、navigator、event

1.history:保存当前窗口的历史记录(历史url)

 作用:history.go(i);
 前进一步:history.go(1);
 后退一步:history.go(-1);
 刷新:history.go(0);

2.location:保存当前窗口的正在打开的url

  • 1.常识:一个url由5部分组成 http://127.0.0.1:8020/文件路径 www.baidu.com/s?wd=178&rs… /s 路径百度加密了 协议:http/https(请求响应模式)/ftp(传输文件)/ws(广播收听模式:直播) -网页的功能不同 域名/主机号:www.baidu.com/127.0.0.1 -主机号不方便记忆所以会购买域名,而且127.0.0.1只能访问自己 端口号:8020 -默认端口: http-80 https=433, 默认端口可以省略不写 查询字符串:?wd=178&rsv... -表单提交到服务器的东西 -请求消息 一般来说一个网址一定有5部分: 协议://域名:端口号/文件路径?查询字符串
  • 2.属性:直接在js中输出 console.log(location)可以查看到有哪些属性 作用:获取:协议、域名、端口号、文件路径、查询字符串
  • 3、API:跳转 location="新url"; location.href="新url"; location.assign("新url"); 替换后禁止后退:location.replace("新Url"); 刷新:location.reload();

3.navigator:保存了当前浏览器的信息,(浏览器的名称/版本号)

   属性:navigator.userAgent;

4.event:事件对象

  • 1.绑定事件:3种 1.在HTML元素上绑定 <elem on事件名="js语句"> 缺点: 1.没有实现js和html的分离 2.无法动态绑定事件 -一次只能绑定一个元素 3.无法同时绑定多个函数对象 2.使用js的事件属性绑定: elem.on事件名=function(){ js语句 } 优点:1.实现js与html的分离 2、动态绑定事件 缺点:1.无法同时绑定多个函数对象 3.使用js的API绑定事件: 主流:elem.addEventlListener("事件名",callback); 老IE:elem.attachEvent("事件名",callback); 兼容写法:if(elem.addEventListener){ elem.addEventListener("事件名",callback); }else{ elem.attachEventListener("事件名",callback); } 优点:1、实现了js与html的分离 2、动态绑定事件 3、同时可绑定多个函数对象 缺点:需要处理兼容性问题 麻烦

  • 2.事件周期: 主流:3个 1、捕获阶段:由外向内,记录着要执行的事件 2、目标触发:当前点击的元素优先触发 3、冒泡触发:由内向外的冒泡触发事件 老IE:2个 没有捕获阶段

  • 3.获取到事件对象event: 主流:事件函数中传入一个形参e,就可以自动接住事件对象event 老IE:window.event;
    兼容:event; 获取到事件对象event可以做的操作 1.获取鼠标的位置 2.阻止冒泡 主流:e.stopPropagation(); 老IE:e.cancelBubble=true; 兼容:if(e.stopPropagation){ e.stopPropagation(); }else{ e.cancelBubble=true; } 3.事件委托 作用:优化,因为每绑定一个事件,相当于就创建了一个事件监听对象,创建的对象越多,网页的性能越低下。 建议:把事件都绑定在自己的父元素身上一次即可 获取目标元素: 主流:e.target; 老ie:e.srcElement; 兼容:e.srcElement; 4.阻止浏览器的默认行为: 比如:F5的刷新,F12控制台,右键的菜单框,F11全屏,a自带的跳转.... 主流:e.preventDefault(); 老IE:e.returnValue=false; 兼容:if(e.preventDefault){ e.preventDefault; }else{ e.returnValue=false; } 新事件: 1、鼠标右击:window.oncontextmenu 2、键盘事件:window.onkeydown 5.获取键盘的键码 e.keyCode; 可直接输出查看或者百度KeyCode表

扩展:客户端存储技术

 以前使用cookie(缺点:大小有限2kb.存储时限30天)
 现在HTML5提出一个新概念webStorage:2种(优点:大小有限8mb,存储时长不限,缺点老ie不支持)
 1.localStorage:本地级   -浏览器关闭甚至电脑关闭,打开看依然存在
 2.sessionStorage:会话级   -浏览器关闭就没有了
 作用:
  1.数据可以跨页面传输
  2.浏览器的历史记录
 语法:
    添加:xxxStorage.属性名=“值”;
    获取:xxxStorage.属性名;
    删除:xxxStorage.removeItem("属性名");  //只会删除这一个
    清空:xxxStorage.clear();  //删除所有