JavaScript——异步编码

以响应事件的方式组织代码是另一种代码编写方式。要以这种方式编写代码,需要考虑可能发生的事件和代码应如何响应这些事件。通常响应事件式的编码就是异步编码。

网页加载完成后执行的动作,我们可以把动作写在一个函数里,然后把函数赋给window对象的onload属性。

window.onload = init;
function init(){
	alert("What do you want for me");
}

注意:此时函数定义的位置无关紧要,因为网页加载完后,一切都准备好了,不存在找不到函数的问题。

事件对象的工作原理

单击事件处理程序被调用时,将向处理程序传递一个事件对象。事实上,大多数文档对象模型(DOM)事件发生时,都会向相应的处理程序传递一个事件对象。事件对象包含一些有关事件的常规信息,如事件是哪个元素触发的和事件是何时发生的。另外,你还
可以获得事件特有的信息,如用户单击鼠标时,单击位置的坐标。一个事件对象里大概能获得哪些信息:
target:元素对象
type:事件类型,如click、load
clientX:点击位置的横坐标
clientY:点击位置的纵坐标
timeStamp:事件发生的时间

给出一个例子展示这些特点:

<!doctype html>
<html lang="en">
        <head>
                <meta charset="utf-8">
                <title>My First JavaScript</title>
        </head>
        <body>
        <script>
                window.onload = init;
                function hello(eventObj){
                        //获取元素对象
                        var d = eventObj.target;
                        d.innerHTML = "Every dog has its own day!";
                        //事件类型
                        alert(eventObj.type);
                        //获取点击的坐标
                        alert(eventObj.clientX+" "+eventObj.clientY);
                        //获取事件发生的时间
                        alert(eventObj.timeStamp);
                }
                function init(){
                        var d = document.getElementById("hel");
                        d.onclick = hello;
                }
        </script>
                <p id="hel">Hello , doooooooooo</p>
        </body>
</html>   

从上面可以看出我们将函数用作事件处理程序,因为它们让我们能够编写在事件发生时再执行的代码。编写用于处理事件的代码不同于从头到尾执行的代码。事件处理程序的运行时间和运行顺序都是不确定的,所以它们是异步的。

发生在DOM元素上的事件(DOM事件)将导致一个event对象被传递给事件处理程序。

另外,如果在短时间内发生很多事件,导致浏览器无法实时处理,那么这些事件将按发生的顺序存储到事件队列中,让浏览器能够依次调用每个事件的处理程序。

谢谢阅读。

猜你喜欢

转载自blog.csdn.net/weixin_40763897/article/details/88027156