JavaScriptのイベントタイプとは何ですか

青灯夜游
リリース: 2021-12-08 15:43:36
オリジナル
1509 人が閲覧しました

JavaScript では、イベント タイプはイベントがトリガーされる方法を指します。簡単に理解すると、どのようなイベントがトリガーされるかがわかります。イベント タイプには、UI イベント、フォーカス イベント、マウスとホイール イベント、キーボードとテキスト イベント、および複合イベント、変更イベント、HTML5 イベント、デバイス イベント、タッチおよびジェスチャ イベントなど。

JavaScriptのイベントタイプとは何ですか

このチュートリアルの動作環境: Windows7 システム、JavaScript バージョン 1.8.5、Dell G3 コンピューター。

イベントとは、JavaScript によって検出できる動作を指し、「トリガー応答」メカニズムです。これらの動作は、ページの読み込み、マウスのクリック/ダブルクリック、特定の領域上でのマウス ポインタのスライドなどの特定のアクションを指します。これは、ページのインタラクティブな効果を実現する上で非常に重要な役割を果たします。

イベントは、イベント ソース、イベント タイプ、イベント ハンドラーの 3 つの部分で構成されており、「イベントの 3 要素」とも呼ばれます。

  • イベント ソース: イベントをトリガーする要素

  • イベント タイプ: イベントがトリガーされる方法 (マウス クリックなど)またはキーボードクリック)

  • イベント ハンドラー: イベントがトリガーされた後に実行されるコード (関数形式)

上記の 3 つの要素は次のようになります。単純に、「誰がイベントをトリガーするか」、「どのイベントがトリガーされるか」、「イベントがトリガーされた後に何をするか」として理解されます。

Web ブラウザーではさまざまな種類のイベントが発生します。ここでは主に、一般的に使用される次のイベント タイプに焦点を当てます。

  • UI イベント
  • フォーカス イベント
  • マウスとホイール イベント
  • キーボードとテキスト イベント
  • 複合イベント
  • 変更イベント
  • HTML5 イベント
  • デバイス イベント
  • タッチ アンド ジェスチャ イベント

パート 1: UI イベント

UI イベントの UI は (ユーザー インターフェイス、ユーザー インターフェイス) であり、ユーザーがページ サウナの要素と対話するときにトリガーされます。

UI イベントには主に、ロード、アンロード、中止、エラー、選択、サイズ変更、スクロール イベントが含まれます。

1.load イベント

このイベントは、ページが完全に読み込まれると発生します (すべての画像、js ファイル、外部 CSS を含む)ファイルなどのリソース)、ウィンドウ上のロード イベントがトリガーされます。

このイベントは、JavaScript で最も一般的に使用されるイベントです。たとえば、window.onload=function(){} という形式がよく使用されます。 、ページが完全にロードされた後に関数を実行するとき。

さらに、以下に示すように、このイベントが画像要素などの他の要素にも使用できることを知りませんでした。

<img src="smile.png" onload="alert(&#39;loaded&#39;)">  
ログイン後にコピー

つまり、画像が完全にロードされます。出てきた後、ポップアップウィンドウが表示されます。もちろん、以下に示すように、JS を使用して実装することもできます。

var img=document.getElementById("img");
EventUtil.addHandler(img,"load",function(){
      event=EventUtil.getEvent(event);
      alert(EventUtil.getTarget(event).src);
});
ログイン後にコピー

2.unload event

明らかに、このイベントは相対的なものです。のロードイベントに。 ドキュメントが完全にアンロードされた後にトリガーされます。アンロード時間は、ユーザーがあるページから別のページに切り替えるときにトリガーされます。 このイベントの最も一般的な用途は、メモリ リークを避けるために参照をクリアすることです。

#このイベントにも 2 つの指定方法があります。 1 つは EventUtil.addHandler() を使用する JavaScript メソッドであり、もう 1 つは body 要素に機能を追加するものです。

onload イベントはページが読み込まれた後にトリガーされるため、コードを記述するときは注意が必要です。アンロードされるため、ページがロードされた後に存在するオブジェクトは、onload がトリガーされた後にも存在するとは限りません。

<body onload="alert(&#39;changed&#39;)">
ログイン後にコピー

3.サイズ変更イベント

ブラウザ ウィンドウのサイズが新しい幅または高さに変更されると、サイズ変更イベントがトリガーされます。このイベントはウィンドウでトリガーされます。 #したがって、ハンドラーは、JS の onresize 属性または body 要素を通じて指定することもできます。

<body onresize="alert(&#39;changed&#39;)">
ログイン後にコピー

このコードを書くと、ブラウザのサイズが変わったときにウィンドウがポップアップします。

4.scroll event

このイベントは、ドキュメントがスクロールされている間繰り返しトリガーされるため、イベント ハンドラーのコードは次のように単純にする必要があります。可能。

第二部分:焦点事件

  焦点事件会在页面元素获得或失去焦点时触发。主要有下面几种:

  • blur 在元素失去焦点时触发。这个事件不冒泡,所有浏览器都支持。
  • focus 在元素获得焦点时触发。这个事件不冒泡,所有浏览器都支持。
  • focusin 在元素获得焦点时触发。这个事件冒泡,某些浏览器不支持。
  • focusout 在元素失去焦点时触发。这个事件冒泡,某些浏览器不支持。

  注意:即使blur和focus不冒泡,也可以在捕获阶段侦听到他们。

第三部分:鼠标与滚轮事件

  鼠标事件是Web开发中最常用的一类事件,因为鼠标是最主要的定位设备。

  • click---用户单击鼠标左键或按下回车键触发
  • dbclick---用户双击鼠标左键触发。
  • mousedown---在用户按下了任意鼠标按钮时触发。
  • mouseenter---在鼠标光标从元素外部首次移动到元素范围内时触发。此事件不冒泡
  • mouseleave---元素上方的光标移动到元素范围之外时触发。不冒泡
  • mousemove---光标在元素的内部不断的移动时触发。
  • mouseover---鼠标指针位于一个元素外部,然后用户将首次移动到另一个元素边界之内时触发。
  • mouseout---用户将光标从一个元素上方移动到另一个元素时触发。
  • mouseup---在用户释放鼠标按钮时触发。

  注意到:上述所有事件除了mouseenter和mouseleave外都冒泡。

  重要:只有在同一个元素上相继触发mousedown和mouseup事件,才会触发click事件。同样,只有在同一个元素上触发两次click事件,才会触发dbclick事件。

  dbclick事件的产生过程如下:

  • mousedown

  • mouseup

  • click

  • mousedown

  • mouseup

  • click

  • dbclick

  上面介绍了有关鼠标的事件,下面介绍一些对于鼠标光标的位置:客户区坐标位置、页面坐标位置、屏幕坐标位置

一、客户区坐标位置

  通过客户区坐标可以知道鼠标是在视口中什么位置发生的。

  clientX和clientY分别表示鼠标点击的位置。以body的左上角为原点,向右为X的正方向,向下为Y的正方向。这两个都是event的属性。举例如下:

    <button id="clickMe">点我</button>
    <script>
        var button=document.getElementById("clickMe");
        button.onclick=function(event){
            alert(event.clientY+""+event.clientX);
        };    
     </script>
ログイン後にコピー

  当我点击按钮的左上角时,显示为00。效果如下:

二.页面坐标位置

  和客户区坐标位置不同,页面坐标位置表示鼠标光标在页面而非视口中的位置。因此坐标是从页面本身而非视口的左边和顶边计算的。如果前面的话不能很好的理解,接着看这里:在页面没有滚动的情况下,页面坐标位置和客户区坐标位置是相同的。

  页面坐标

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>页面坐标位置</title>
    <style>
        *{
            margin:0;
            padding:0;
        }
        p{
            width: 800px;
            height: 1200px;            /*我的电脑的视口高度为960px;*/
            background: #ccc;
        }    </style>
</head>
<body>
    <p></p>
    <button id="button"> 点击我</button>
    <script>        
    var button=document.getElementById("button");
        button.onclick=function(){
            alert("pageX为"+event.pageX+"pageY为"+event.pageY);
        };    </script>
</body>
</html>
ログイン後にコピー

在上面的例子中,我把p的高设置为了1200px;而我的浏览器视口高度为960px;所以一定需要滚动我们才能点击按钮,最终得到的结果是:pageX为13pageY为1210。

然而IE8及更早的浏览器是不支持事件对象上的页面坐标的,即不能通过pageX和pageY来获得页面坐标,这时需要使用客户区坐标和滚动信息来计算了。而滚动信息需要使用document.body(混杂模式)、document.documentElement(标准模式)中的scrollLeft和scrollTop属性。举例如下:

    <button id="button"> 点击我</button>
    <script>        var button=document.getElementById("button");
        button.onclick=function(){            
        var pageX=event.clientX+(document.body.scrollLeft||document.documentElement.scrollLeft);           
         var pageY=event.clientY+(document.body.scrollRight||document.documentElement.scrollRight);
            alert("pageX为"+pageX+"pageY为"+pageY);
        };    
      </script>
ログイン後にコピー

此例子在IE浏览器下可得到同样结果。

三.屏幕坐标位置

  与前两者又有所不同,鼠标事件发生时,还有一个光标相对于整个电脑屏幕的位置。通过screenX和screenY属性就可以确定鼠标事件发生时鼠标指针相对于整个屏幕的位置。举例如下:

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>页面坐标位置</title>
    <style>
        *{
            margin:0;
            padding:0;
        }    </style>
</head>
<body>
    <button id="button"> 点击我</button>
    <script>        
    var button=document.getElementById("button");
        button.onclick=function(){
            alert("X为:"+event.screenX+"Y为:"+event.screenY);
        };    
      </script>
</body>
</html>
ログイン後にコピー

最终的结果如下:

显然screenX和screenY是相对于屏幕的左方和上方的。

四.修改键

  当点击某个元素时,如果我们同时按下了ctrl键,那么事件对象的ctrlKey属性值将为true,否则为false,对于alt、shift、meta(windows键盘的windows键、苹果机的Cmd键)的事件属性altKey、shiftKey、metaKey同样如此。下面举例如下:

    <button id="button"> 点击我</button>
    <script>        
    var button=document.getElementById("button");
        button.onclick=function(){            
        var array=new Array();            
        if(event.shiftKey){
                array.push("shift");
            }            if(event.ctrlKey){
                array.push("ctrl");
            }            if(event.altKey){
                array.push("alt");
            }            if(event.metaKey){
                array.push("meta");
            }
            alert(array.join(","));
        };    
      </script>
ログイン後にコピー

这个例子中,我首先创建了一个array数组,接着如果我按下了那几个键,就会存入相应的名称。这里我同时按下了四个键,结果如下:

即最终将数组中的四个值拼接成了字符串显示出来。

七、鼠标滚轮事件

    <script>
        document.onmousewheel=function(){
            alert(event.wheelDelta);
        };    
     </script>
ログイン後にコピー

当我向下滚动滚轮时,效果如下:

第四部分:键盘和文本事件

  该部分主要有下面几种事件:

  • keydown:当用户按下键盘上的任意键时触发。按住不放,会重复触发。

  • keypress:当用户按下键盘上的字符键时触发。按住不放,会重复触发。

  • keyup:当用户释放键盘上的键时触发。

  • textInput:这是唯一的文本事件,用意是将文本显示给用户之前更容易拦截文本。

  这几个事件在用户通过文本框输入文本时才最常用到。

  键盘事件:

    document.addEventListener("keydown",handleKeyDownClick,false);

        function handleKeyDownClick(event) {            
        var e = event||window.event||arguments.callee.caller.arguments[0];            
        if (e&&e.keyCode == 13) {
                alert("keydown");
            }
        }
ログイン後にコピー

【相关推荐:javascript学习教程

以上がJavaScriptのイベントタイプとは何ですかの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

関連ラベル:
ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
最新の問題
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート