javascriptDom(五)

正课: 
1. DOM常用对象: 
  history
  location
  navigator
*****event
1. history: 
 什么是: 保存当前窗口打开后,成功访问过的url的历史记录栈。
 特点: 内容不对开发人员开放,更无法修改
 如何使用: 前进,后退,刷新
   前进: history.go(1)
   后退: history.go(-1)
   刷新: history.go(0)
2. location:
 什么是: 保存当前窗口正在打开的url的对象
 何时使用: 
   1. 跳转: 只能实现在当前窗口打开
     location.href="url";
     location.assign("url");
     location="url"
   2. 重新加载当前页面:
     location.reload(false/true);
      参数: force 表示是否强制从服务器硬盘获取最新文档。
   3. 在当前页面打开,禁止后退: 
     location.replace("url");
      打开新url,并用新url替换history中当前旧url,实现禁止后退
  属性: http://tmooc.cn:8080/orders/orderDetails/index.html?username=zhangdong&kw=大鱼
          #top
   location.protocol: 协议
           .host: 主机名+端口号
           .hostname: 主机名
           .port: 端口
           .pathname: 相对路径
           .search: ?及其之后的查询字符串
           .hash: #锚点名
3. navigator:
  包含了所有浏览器的配置信息: 没有标准
  1. 判断cookie是否启用: 
    navigator.cookieEnabled
  2. 判断是否安装了指定插件(plugin)
    navigator.plugins集合

  3. 判断浏览器名称和版本号(只支持5大浏览器)


1.*****event
  
1.*****event:
 什么是:浏览器自动触发或用户手动触发的页面元素状态的改变。
  比如: change  click  focus  blur 
 事件处理函数:当事件发生时,自动触发执行的函数。
  事件处理函数其实就是元素的一个特殊属性
  属性的值是一个函数对象
  比如: onchange  onclick   onfocus
    elem.οnclick=function(){...}
  当事件发生时,自动执行: elem.onclick();


  如何绑定事件处理函数: 3种:
   1. 在html中绑定:
     <elem onXXX="js语句"
     <button οnclick="fun(this)"
       fun(obj){obj->btn  this->window  }
       button.οnclick=function(){
 //this->btn
 eval("fun(this)"); //obj->btn
       }
    问题: 1. 不符合内容和行为分离的原则
       2. 其实不是真正的绑定,只是传入一条js语句而已。
   2. 在js中动态绑定: 
    1. elem.onxxx=function(){
          this->elem
       }
     问题: 1. 一个事件处理函数只能绑定一个函数对象。
        2. 无法改变事件触发的顺序
    2. DOM:
       elem.addEventListener(
          "事件名",fun,false/true
       );
       为elem元素的指定"事件",绑定fun
       第三个参数: 设置是否在捕获阶段触发
     优: 1. 为一个事件处理函数,绑定多个函数对象。当事件发生时,可同时执行多个任务。
      2. 可以改变事件触发的顺序
      vs IE8: elem.attachEvent(
"on事件名",fn 
              );//没有第三个参数


***DOM事件模型:
  3个阶段: 
   1. 捕获:由外向内,依次记录各级元素绑定的事件处理函数
     捕获阶段只到目标元素截止
   2. 目标触发: 默认实际触发事件的元素上的处理函数先执行。
      目标元素: 实际触发事件的元素
   3. 冒泡: 按照捕获阶段反向的顺序,依次执行各级父元素上的事件处理函数
   
 vs IE8: 事件模型:2个阶段:目标触发,冒泡


***event:事件对象:
   当事件发生时,自动创建的,封装事件信息的对象。
   如何获得: 发生事件时,自动调用事件处理函数。此时js会将事件对象默认作为事件处理函数的第一个参数,放入函数。——DOM
     elem.addEventListener(
"事件名",function(e){
       //e->event
     });
   vs IE8: 事件对象保存在全局变量event中
          不作为第一个参数传入
      兼容DOM和IE8:
          e=e||window.event
        如果e有效,就用e,否则用event
   


   取消冒泡: 执行完当前元素的事件处理函数后,阻止冒泡向上执行。
     e.stopPropagation();
   vs IE8:
     e.cancelBubble=true;


   利用冒泡:
***优化: 尽量减少事件监听的个数
    办法: 如果多个子元素绑定相同的事件处理函数,则只需要将事件处理函数绑定在父元素一次即可!
    问题: 如何获得目标元素:
     this->会随冒泡而改变
    解决:e.target 始终保持目标元素
    vs IE8: target=e.target||e.srcElement
                   DOM          IE8


   取消事件:在事件执行过程中,如果出现问题,可阻止事件继续执行。
    更多是取消默认行为!
    如何取消:
      e.preventDefault();
     vs return : 
       preventDefault阻止后续默认行为
          不是停止当前函数执行
          放前放后,对当前函数无影响
       return: 退出当前函数执行
          但不阻止默认行为的执行


   练习: form.onsubmit事件:
          当表单提交之前触发


   事件坐标:
     1. 相对于屏幕左上角:
       e.screenX/Y
     2. 相对于文档显示区左上角:
       e.clientX/Y
       兼容性问题: e.x/y
     3. 相对于所在的父元素左上角:
       e.offsetX/Y










    navigator.userAgent

















评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值