美文网首页
js事件入门(5)

js事件入门(5)

作者: 螺钉课堂 | 来源:发表于2019-12-18 09:32 被阅读0次

5.窗口事件

#5.1.onload事件

元素加载完成时触发,常用的就是window.onload

window.onload = function(){
    //等页面加载完成时执行这里的代码
}

#5.1.resize

当浏览器窗口改变的时候触发

window.onresize = function(){
    alert(1)
}

#6.event对象

#6.1.什么是event对象?

event对象代表事件的状态,当事件发生的时候用来记录事件的详细信息,类似于飞机的黑匣子。

在ie和chrome中,事件对象(event)是一个内置的全局对象,必须在事件调用的时候才有值,如果没有事件调用,event没有值,

在firefox中event对象没有被定义,如果一个函数被事件调用,那么这个事件函数中的第一个参数就是event对象,这也是标准浏览器下的处理方式,在非标准下,这种方式不被采用

总结:在非标准下,使用被定义好的event内置对象,在标准下使用事件函数中的第一个参数,假设传入的第一个参数为ev,可以用逻辑或做兼容,var ev = ev || event

<!DOCTYPE html>
<html>
    <head>
        <meta charset="UTF-8">
        <title></title>
        <script type="text/javascript">
            window.onunload = function(){
                var oDiv = document.getElementById('box');
                oDiv.onclick = function(ev){
                    //这里的ev就是event对象
                    //兼容性处理
                    var ev = ev || event;
                    console.log(ev);
                }
            }
        </script>
    </head>
    <body>
       <div id="box"></div>
    </body>
</html>

#6.2.event对象上的属性 clientX,clientY

clientX 事件属性返回当事件被触发时鼠标指针向对于浏览器页面(或客户区)的水平坐标。clientY 事件属性返回当事件被触发时鼠标指针向对于浏览器页面(客户区)的垂直坐标。

<!DOCTYPE html>
<html>
    <head>
        <meta charset="UTF-8">
        <title></title>
        <script type="text/javascript">
            window.onload = function(){
                var oDiv = document.getElementById('box');

                document.onmousemove = function(ev){
                    //event对象
                    var ev = ev || event;
                    //innerHtml表示往div里面添加内容
                    oDiv.innerHTML = "clientX:"+ev.clientX+",clientY:"+ev.clientY;
                }
            }
        </script>
        <style type="text/css">
            #box{
                height: 100px;
                background: black;
                color: white;
            }
        </style>
    </head>
    <body>
       <div id="box"></div>
    </body>
</html>

#6.3.综合案例2

image
综合案例2代码实现:
<!DOCTYPE html>
<html>
    <head>
        <meta charset="utf-8" />
        <title></title>
        <script type="text/javascript">
            window.onload = function(){
                //获取到box对象
                var oDiv = document.getElementById("box");

                oDiv.onmousedown = function(ev){
                    //事件兼容性处理
                    var ev = ev || event;

                    var disX = ev.clientX - oDiv.offsetLeft;
                    var disY = ev.clientY - oDiv.offsetTop;

                    document.onmousemove = function(ev){

                        var ev = ev || event;

                        oDiv.style.left = ev.clientX - disX + "px";
                        oDiv.style.top = ev.clientY -disY + "px";
                    }
                    document.onmouseup = function(){

                        document.onmousemove = null;
                        document.onmouseup = null;
                    }
                    return false;
                }
            }
        </script>
        <style type="text/css">
            #box{
                position: absolute;

            }
            #box img{
                width: 200px;
                height: 200px;
            }
        </style>
    </head>
    <body>
        <div id="box">
            <img src="img/window.png"/>
        </div>
    </body>
</html>

#6.4.event对象上的keycode属性

对于 keypress 事件,该属性声明了被敲击的键生成的 Unicode 字符码。对于 keydown 和 keyup 事件,它指定了被敲击的键的虚拟键盘码。虚拟键盘码可能和使用的键盘的布局相关。

<!DOCTYPE html>
<html>
    <head>
        <meta charset="UTF-8">
        <title></title>
        <script type="text/javascript">
            window.onload = function(){
                document.onkeypress = function(ev){
                    //event对象
                    var ev = ev || event;
                    alert(ev.keyCode);
                }
            }
        </script>
    </head>
    <body>
    </body>
</html>

//对比onkeypress,有什么不同?
<!DOCTYPE html>
<html>
    <head>
        <meta charset="UTF-8">
        <title></title>
        <script type="text/javascript">
            window.onload = function(){
                document.onkeydown= function(ev){
                    //event对象
                    var ev = ev || event;
                    alert(ev.keyCode);
                }
            }
        </script>
    </head>
    <body>
    </body>
</html>

**总结:keycode主要是用来记录用户按下的是哪个键,onkeypress和onkeydown按下时,键盘码不同,常用于游戏中控制方向或者翻页,onkeypress事件在用户按下并放开任何字母数字键时发生。但是系统按钮(例如:箭头键、功能键)无法得到识别。 **

#6.5.综合案例3

//通过键盘控制方向
<!DOCTYPE html>
<html>
    <head>
        <meta charset="UTF-8">
        <title></title>
        <script type="text/javascript">
            window.onload = function(){
                //获取到box对象
                var oBox = document.getElementById('box');
                //定义x y轴的增量
                var x = y= 0;
                //键盘按下事件
                document.onkeydown = function(ev){
                    //事件兼容
                    var ev = ev || event;

                    //上38  下 40 左37 右39
                    switch(ev.keyCode){
                        case 38:
                            y -= 10;
                            break;
                        case 40:
                            y += 10;
                            break;
                        case 37:
                            x -= 10;
                            break;
                        case 39:
                            x += 10;
                            break;
                    }
                    //改变偏移量
                    oBox.style.left = x + "px";
                    oBox.style.top = y + "px";
                }
            }
        </script>
        <style type="text/css">
            #box{
                width: 100px;
                height: 100px;
                background: red;
                position: absolute;
            }
        </style>
    </head>
    <body>
         <div id="box">
         </div>
    </body>
</html>

相关文章

  • js事件入门(5)

    5.窗口事件 #5.1.onload事件 元素加载完成时触发,常用的就是window.onload #5.1.re...

  • 事件

    1、鼠标的移入移除js部分 2、鼠标事件js部分 3、事件对象js部分 4、键盘事件js部分 5、输入框事件js部...

  • Node.js核心入门(二)

    目录:Node.js核心入门(一) 全局对象 常用工具 事件机制 Node.js核心入门(二) 文件系统访问 HT...

  • TypeScript入门

    慕课网@JoJozhai 老师 TypeScript入门课程分享 TypeScript入门 ES5,ES6,JS,...

  • js事件入门(1)

    1.事件相关概念 1.1 什么是事件? 事件是用户在访问页面时执行的操作,也就是用户访问页面时的行为。当浏览器探测...

  • js事件入门(2)

    2.鼠标事件 鼠标事件就是用户与页面的许多交互时通过鼠标移动或者鼠标点击等触发的事件. #2.1.onmoused...

  • js事件入门(3)

    3.键盘事件 #3.1.onkeydown 键盘按下事件 当键盘按下的时候触发 #3.2.onkeyup 键盘抬起...

  • js事件入门(4)

    4.表单事件 表单事件处理主要用来验证表单,可以处理用户在表单上所做的任何操作。 #4.1.onsubmit事件 ...

  • js事件入门(6)

    7.事件冒泡机制 #7.1.什么是事件冒泡 当一个元素接收到一个事件以后,会将事件传播给它的父级元素,它的负级元素...

  • DOM事件

    1.事件入门 a.认识JavaScript事件 Js是一门事件驱动的语言。任何地方其实都带着事件。如能明显感受到的...

网友评论

      本文标题:js事件入门(5)

      本文链接:https://www.haomeiwen.com/subject/guuynctx.html