zoukankan      html  css  js  c++  java
  • 事件基础---初

    什么是event对象
    用来获取事件的详细信息:鼠标位置、键盘按键
    –例子:获取鼠标位置:clientX
    –document的本质:document.childNodes[0].tagName
    l获取event对象(兼容性写法)
    •var oEvent=ev||event;
    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
    <html xmlns="http://www.w3.org/1999/xhtml">
    <head>
    <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
    <title>event</title>
    <script>
    document.onclick=function (ev)
    {
         //兼容的写法
        var oEvent=ev||event;
        
        alert(oEvent.clientX+', '+oEvent.clientY);
        //IE下兼容的写法
        //alert(event.clientX+', '+event.clientY);
        
        //FF兼容的写法
        //alert(ev.clientX+', '+ev.clientY);
        
        /*if(ev)
        {
            alert(ev.clientX+', '+ev.clientY);
        }
        else
        {
            alert(event.clientX+', '+event.clientY);
        }*/
    };
    </script>
    </head>
    
    <body>
    </body>
    </html>
    client
    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
    <html xmlns="http://www.w3.org/1999/xhtml">
    <head>
    <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
    <title>无标题文档</title>
    <script>
    document.onkeydown=function (ev)
    {
        var oEvent=ev||event;
        
        alert(oEvent.keyCode);
    };
    </script>
    </head>
    
    <body>
    </body>
    </html
    View Code
    事件流
    事件冒泡
    –取消冒泡:oEvent.cancelBubble=true;
    –例子:仿select控件
    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
    <html onclick="alert('html');" xmlns="http://www.w3.org/1999/xhtml">
    <head>
    <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
    <title>无标题文档</title>
    </head>
    
    <body onclick="alert('body');">
    <div style="300px; height:300px; background:red;" onclick="alert(this.style.background);">
        <div style="200px; height:200px; background:green;" onclick="alert(this.style.background);">
            <div style="100px; height:100px; background:#CCC;" onclick="alert(this.style.background);">
            </div>
        </div>
    </div>
    </body>
    </html>
    bubbled up

    oEvent.cancelBubble=true;差入到以上函数执行内部则终止则实现终止冒泡!

    DOM事件流

    鼠标位置
    可视区位置:clientX、clientY
    –例子1:跟随鼠标的Div
    »消除滚动条的影响
    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
    <html xmlns="http://www.w3.org/1999/xhtml">
    <head>
    <style>
    #div1 {100px; height:100px; background:red; position:absolute;}
    </style>
    <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
    <title>无标题文档</title>
    <script>
    document.onmousemove=function (ev)
    {
        //获取客户端  get Oevent
        var oEvent=ev||event;
        //获取div   get div
        var oDiv=document.getElementById('div1');
             //获取滚动条滚动时的高和左边距
            var scrollTop=document.documentElement.scrollTop||document.body.scrollTop;
            var scrollLeft=document.documentElement.scrollLeft||document.body.scrollLeft;
        //动态赋予div左和高
        oDiv.style.left=oEvent.clientX+scrollLeft+'px';
        oDiv.style.top=oEvent.clientY+scrollTop+'px';
    };
    </script>
    </head>
    
    <body>
    <div id="div1">
    </div>
    </body>
    </html>
    followed mouse
    滚动条的意义——可视区与页面顶部的距离
    获取鼠标在页面的绝对位置
    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
    <html xmlns="http://www.w3.org/1999/xhtml">
    <head>
    <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
    <title>无标题文档</title>
    <script>
    document.onclick=function ()
    {
        //处理兼容问题
        var scrollTop=document.documentElement.scrollTop||document.body.scrollTop;
        //输出滚动后离浏览器上边距
        alert(scrollTop);
        
        
    };
    </script>
    </head>
    
    <body style="height:2000px;">
    </body>
    </html>
    scroll
    封装函数
    –例子2:一串跟随鼠标的Div
    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
    <html xmlns="http://www.w3.org/1999/xhtml">
    <head>
    <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
    <title>无标题文档</title>
    <style>
    body{background:#333;}
    div {10px; height:10px; background:#FFF; position:absolute;}
    </style>
    <script>
    window.onload=function()
    {
    
        var aDiv=document.getElementsByTagName('div');
        var i=0;
    
      document.onmousemove=function(ev)
      {
          var oEvent=ev||event;
            for(i=aDiv.length-1; i>0; i--)
            {   //数组左边的div等于离客户端最近的div 左上边距
                aDiv[i].style.left=aDiv[i-1].style.left;
                aDiv[i].style.top=aDiv[i-1].style.top;
                }
                //adv的左上等于客户端点击的边距;
                aDiv[0].style.left=oEvent.clientX+'px';
                aDiv[0].style.top=oEvent.clientY+'px';
          }
        }
    </script>
    </head>
    
    <body><div></div>
    <div></div>
    <div></div>
    <div></div>
    <div></div>
    <div></div>
    <div></div>
    <div></div>
    <div></div>
    <div></div>
    <div></div>
    <div></div>
    <div></div>
    <div></div>
    <div></div>
    <div></div>
    <div></div>
    <div></div>
    <div></div>
    <div></div>
    <div></div>
    <div></div>
    <div></div>
    <div></div>
    <div></div>
    <div></div>
    <div></div>
    <div></div>
    <div></div>
    <div></div>
    <div></div>
    <div></div>
    <div></div>
    <div></div>
    <div></div>
    <div></div>
    <div></div>
    <div></div>
    <div></div>
    <div></div>
    </body>
    </ht
    pull along client
    •获取用户按下键盘的哪个按键
    •例子:键盘控制Div移动
    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
    <html xmlns="http://www.w3.org/1999/xhtml">
    <head>
    <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
    <title>无标题文档</title>
    <style>
    #div1{ 100px; height:100px; position:absolute; background:#F00; top:0; left:0;}
    </style>
    <script>
    window.onload=function(){
        var oDiv=document.getElementById('div1');
        //把键值默认为假
        var i=r=t=b=false;
        //监听  键盘按下
    document.addEventListener('keydown',function(ev){
        var oEvent=ev||event;
       // 判断键值数字 如何是则为真
        switch(oEvent.keyCode){
            case 37: i=true; break;
            case 38: r=true; break;
            case 39: t=true; break;
            case 40: b=true; break;
            
            }
            },false);
        //监听  键盘抬起
    document.addEventListener('keyup',function(ev){
           var oEvent=ev||event;
          //判断键值 是真则为假
          switch(oEvent.keyCode){
              case 37: i=false; break;
              case 38: r=false; break;
              case 39: t=false; break;
              case 40: b=false; break;
             
              }
        
        },false);
        
        setInterval(function(){
            //分配写入各个键值的作用
            if(i) oDiv.style.left=oDiv.offsetLeft-10+'px';
            if(t) oDiv.style.left = oDiv.offsetLeft + 10 + "px";
            if(r) oDiv.style.top = oDiv.offsetTop - 10 + "px";
            if(b) oDiv.style.top = oDiv.offsetTop + 10 + "px";
            },1)
        
        
        };
    </script>
    </head>
    
    <body>
    <div id="div1">
    </div>
    </body>
    </html>
    Continuous movement
    l其他属性
    ctrlKey、shiftKey、altKey
    •例子:仿空间提交留言
    –回车 提交
    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
    <html xmlns="http://www.w3.org/1999/xhtml">
    <head>
    <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
    <title>无标题文档</title>
    <script>
    window.onload=function ()
    {
        var oBtn=document.getElementById('btn1');
        var oTxt1=document.getElementById('txt1');
        var oTxt2=document.getElementById('txt2');
        
        oBtn.onclick=function ()
        {
            oTxt1.value+=oTxt2.value+'
    ';
            oTxt2.value='';
        };
        
        oTxt2.onkeydown=function (ev)
        {
            var oEvent=ev||event;
            
            if(oEvent.keyCode==13)
            {
                oTxt1.value+=oTxt2.value+'
    ';
                oTxt2.value='';
            }
        };
    };
    </script>
    </head>
    
    <body>
    <textarea id="txt1" rows="10" cols="40"></textarea><br />
    <input id="txt2" type="text" />
    <input id="btn1" type="button" value="留言" />
    </body>
    </html>
    Enter getup
    –ctrl+回车 提交
    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
    <html xmlns="http://www.w3.org/1999/xhtml">
    <head>
    <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
    <title>无标题文档</title>
    <script>
    window.onload=function ()
    {
        var oBtn=document.getElementById('btn1');
        var oTxt1=document.getElementById('txt1');
        var oTxt2=document.getElementById('txt2');
        
        oBtn.onclick=function ()
        {   
            oTxt1.value+=oTxt2.value+'
    ';
            oTxt2.value='';
        };
        
        oTxt2.onkeydown=function (ev)
        {
            var oEvent=ev||event;
            
            if(oEvent.ctrlKey && oEvent.keyCode==13)
            {
                oTxt1.value+=oTxt2.value+'
    ';
                oTxt2.value='';
            }
        };
    };
    </script>
    </head>
    
    <body>
    <textarea id="txt1" rows="10" cols="40"></textarea><br />
    <input id="txt2" type="text" />
    <input id="btn1" type="button" value="留言" />
    </body>
    Ctrl+Enter
    知识点
    l获取事件对象
    l冒泡、取消冒泡
    lDOM事件流
    l鼠标事件
    l键盘事件
     
    古人学问无遗力,少壮工夫老始成。 纸上得来终觉浅,绝知此事要躬行。
  • 相关阅读:
    JAVA基础复习-输入、输出缓冲字节流整合(实现图片复制)
    JAVA基础复习一 字节输入、输出流整合(实现图片复制)
    JAVA基础复习-FileRead与FileWriter结合使用示例:字符输入、输出流整合(实现文本类文件的复制)
    JAVA基础复习- 字符流FileWriter
    JAVA基础复习-字符流FileRead
    JAVA基础复习一 File类的常用功能
    mysql设置大小写敏感
    Understanding the Settlement Mechanism in Microsoft Dynamics AX
    AX2012导入导出excel
    Changes in Microsoft Dynamics AX 2012 InventTrans data model
  • 原文地址:https://www.cnblogs.com/hack-ing/p/5558250.html
Copyright © 2011-2022 走看看