第五周Day2

123 阅读3分钟

history

保存着当前页面/窗口的历史记录

而有了历史记录才可以后退
前进一个窗口:history.go(1)    
后退一个窗口:history.go(-1)    
刷新窗口:history.go(0)

navigator

保存着当前浏览器基本信息 => 名称和版本号

通过js判断用户使用的是什么浏览器,相当于css中的hack(专为老IE准备),对不同的浏览器执行不同的代码;
就一个属性:navigator.userAgent;
它会得到一个字符串,里面有当前浏览器的所有基本信息,然后去获取自己需要的内容;

不重要,因为有很多的兼容性方式等着我们去学习,不需要我们自己判断;

location

保存着当前正在打开的url

常识: url由哪几个部分组成

一定是由5个部分组成
    1、协议:http/https
    2、域名/主机名:域名需要购买
    3、端口:http默认端口80,https默认端口443;默认端口可以省略不写;
    4、文件的相对路径:一般都是加密着的;
    5、请求信息/查询字符串:客户端向服务端发送的请求信息,表单带来的东西
    https : //    www.baidu.com   /      s      ?ie=UTF-8&wd=%E7%99%BE%E5%BA%A6
    协议  : // 域名:端口(默认443)  /文件的相对路径?请求信息

可以做什么:

1、跳转页面:
    location="url"        
    location.href="url"
    location.assign("url")
    
2、跳转页面,禁止后退:
    location.replace("url");
    替换新页面替换掉原页面,不会产生历史记录
    
3、刷新:
    location.reload();

event对象

什么叫event对象:用户触发 或 浏览器自动触发

绑定事件:3种:

  在HTML标签上绑定事件:
    <a on事件名="js代码">内容</a>
  缺点:1、不符合我们页面HTML 样式CSS 行为JS 的分离;
        2、一次只能绑定一个元素,不能动态绑定事件;
        3、一个事件只能放入一个事件处理函数;
        
  在JS中使用事件处理函数绑定事件:
    elem.on事件名=function(){}
  优点:1、符合我们页面HTML 样式CSS 行为JS 的分离;
        2、可以动态绑定事件,一次绑定多个;
  缺点:一个事件只能放入一个事件处理函数;
        
  用API绑定事件:
    主流:elem.addEventListener("事件名",回调函数)
    老IEelem.attrchEvent("事件名",回调函数)
    兼容:if(elem.addEventListener){elem.addEventListener()}
            else{elem.attrchEvent("事件名",回调函数)}
  优点:1、符合我们页面HTML 样式CSS 行为JS 的分离;
        2、可以动态绑定事件,一次绑定多个;
        3、一个事件可以放入多个事件处理函数;
  缺点:兼容不好,麻烦

事件周期 3个阶段

1、捕获阶段:记录要执行的事件有哪些,有外向内
2、目标触发阶段: 目标元素,实际触发事件的元素
3、冒泡执行阶段:由内向外的冒泡执行

如何获取event对象

主流:事件处理函数的第一个形参会自动获取到;
老IE:window.event;
兼容:e=event; => 因为主流也支持window.event

只有当你获取了event对象才可以做以下5个操作:

1、获取鼠标的坐标;

2、防止冒泡:
     主流:e.stopPropagation()
     老IE:e.cancelBubble=true;
     兼容:if(e.stopPropagation){e.stopPropagation()}
            else{e.cancelBubble=true;}
     一般不要防止冒泡因为禁止了就无法利用了
     
3、利用冒泡:也叫事件委托;
    为什么要利用冒泡:绑定的事件越多,开启的事件监听就越多,网站的性能就越差;
    何时使用:任何一个功能都做成事件委托;
    当前元素:事件this指向的
    目标元素:真正触发事件的目标元素
      主流:e.target;
      老IE:e.srcElement;
      兼容:e=srcElement;    =>   因为主流也支持srcElement;
      
4、禁止浏览器的默认行为:
    比如:禁止右键功能(window.oncontextmenu)和阻止键盘事件(window.onkeydown(f5,f12...))
    主流:e.preventExtenious();
    老IE:e.returnValue=false;
    兼容:if(e.preventExtenious){e.preventExtenious()}
            else{e.returnValue=false}
            
5、获取键盘的键码:
    直接输出查看:console.log(e.keyCode)