JavaScript中的事件检查

时间:2012-12-15 22:46:59

标签: javascript html events

如何检查是否发生了某种事件(特定类型)?假设我必须使用以下代码:

<html>

    <head>
        <title>Events</title>
        <script type="text/javascript">
            document.addEventListener('keydown',

            function (event) {
                if (event.keyCode == 13) { //ENTER key was pressed
                    alert("Hahaha!");

                }

            }, false);

            document.addEventListener('click',

            function () {
                alert("Ahahahah!");


            }, false)
        </script>
    </head>

    <body></body>

</html>

假设我想要警告框,其中包含字符串“您在点击事件后按下了ENTER!”按下ENTER时和单击事件发生后显示。

2 个答案:

答案 0 :(得分:2)

您需要记录发生的顺序。 JavaScript默认情况下不会以您描述的方式记忆事件链,只是因为您可以按照您想要的任何顺序触发它们,因此它将是该语言的无用功能。

基本上,当点击事件被触发时,你需要记录它已被触发。基本实现是使用布尔标志。

var clickFired = false;// by default it is false.
document.addEventListener('click', function(event) {
    clickFired = true;
}, false);
document.addEventListener('keydown', function(event) {
    if (clickFired) {
        alert('key pressed after click');
    } else {
        alert('key pressed before click');
    };
};

JavaScript只会记住一些关于事件的非常具体的事情。它知道在触发事件时是否按下了ctrlKeyaltKeyshiftKeymetaKey,还记得了泡泡规则,触发器执行阶段,目标还有一些你可以通过输入来看到的东西:

var clickFired = false;// by default it is false.
    document.addEventListener('click', function(event) {
        console.dir(event);//Firebug command.
        clickFired = true;
    }, false);

此外,要小心,不幸的是,跨浏览器兼容的事件管理根本无法实现。各种浏览器以非常不同的方式处理事件。一个基本的例子是Internet Explorer使用attachEvent(),而不是addEventListener()。〜

如果您正在为生产环境编写代码,我建议您使用某种形式的库来使您的生活更轻松。否则你只需要重新发明轮子,这对于学习目的来说很棒,但你可能会觉得它很乏味且耗时。除非你真的了解JavaScript,否则编写原始代码并不适合你希望其他人立即使用的东西。

答案 1 :(得分:0)

使用回调函数可能是最简单的。以下是包含更多信息here

的示例
function mySandwich(param1, param2, callback) {  
    alert('Started eating my sandwich.\n\nIt has: ' + param1 + ', ' + param2);  
    callback();  
}  

mySandwich('ham', 'cheese', function() {  
    alert('Finished eating my sandwich.');  
});