ホームページ  >  記事  >  ウェブフロントエンド  >  JavaScriptのイベントとは何ですか

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

醉折花枝作酒筹
醉折花枝作酒筹オリジナル
2021-06-11 11:16:434585ブラウズ

Javascript には次のものが含まれます: 1. UI イベント; 2. フォーカス イベント; 3. マウスとホイール イベント; 4. キーボードとテキスト イベント; 5. 複合イベント; 6. 変更イベント; 7. HTML5 イベント; 8.デバイス イベント; 9. タッチおよびジェスチャ イベント。

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

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

JavaScript イベント タイプ

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.unloadevent

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

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

onload イベントでコードを記述するときは注意が必要です。これは、ページがアンロードされた後にトリガーされるため、ページがロードされた後に存在するオブジェクトが、ページのロード後に存在するとは限らないためです。 onload がトリガーされます。

<body onload="alert(&#39;changed&#39;)">

3.resize イベント

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

<body onresize="alert(&#39;changed&#39;)">

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

4.scroll event

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

パート 2: フォーカス イベント

フォーカス イベントは、ページ要素がフォーカスを獲得または失ったときにトリガーされます。主に次のタイプがあります。

#blur は、要素がフォーカスを失ったときにトリガーされます。このイベントはバブルせず、すべてのブラウザでサポートされます。
  • focus 要素がフォーカスを取得するとトリガーされます。このイベントはバブルせず、すべてのブラウザでサポートされます。
  • focusin 要素がフォーカスを取得するとトリガーされます。このイベントはバブルアップするため、一部のブラウザーではサポートされていません。
  • focusout 要素がフォーカスを失ったときに発生します。このイベントはバブルするため、一部のブラウザではサポートされていません。
  • 注: ブラーとフォーカスが泡立っていなくても、キャプチャ段階では依然として聞こえることがあります。
パート 3: マウスとホイール イベント

マウスは主要な位置決めデバイスであるため、マウス イベントは Web 開発で最も一般的に使用されるイベントです。

click---ユーザーがマウスの左ボタンをクリックするか、Enter キーを押して
  • dbclick---ユーザーがダブル-マウスの左ボタンのトリガーをクリックします。
  • mousedown---ユーザーがマウス ボタンを押すとトリガーされます。
  • mouseenter---マウス カーソルが要素の外側から要素のスコープ内に初めて移動したときにトリガーされます。このイベントは泡立ちません。
  • mouseleave---要素の上のカーソルが要素のスコープ外に移動すると発生します。泡立たない。
  • mousemove---カーソルが要素内で連続的に移動するとトリガーされます。
  • mouseover---マウス ポインタが要素の外にあり、ユーザーが初めて別の要素の境界内に移動したときに発生します。
  • mouseout---ユーザーがカーソルをある要素から別の要素に移動すると発生します。
  • mouseup---ユーザーがマウス ボタンを放したときにトリガーされます。
  • 注: マウスエンターとマウスリーブを除く上記のすべてのイベントはバブルします。
重要: クリック イベントは、同じ要素でマウスダウン イベントとマウスアップ イベントが連続してトリガーされた場合にのみトリガーされます。同様に、dbclick イベントは、click イベントが同じ要素で 2 回トリガーされた場合にのみトリガーされます。

  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>
<head>
    <meta charset="UTF-8">
    <title>页面坐标位置</title>
    <style>
        *{
            margin:0;
            padding:0;
        }
        div{
            width: 800px;
            height: 1200px;
            /*我的电脑的视口高度为960px;*/
            background: #ccc;
        }
    </style>
</head>
<body>
    <div></div>
    <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>
<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数组,接着如果我按下了那几个键,就会存入相应的名称。这里我同时按下了四个键,结果如下:

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

五、相关元素

<button id="button"> 点击我</button>
    <script>
        var button=document.getElementById("button");
        button.onmouseup=function(){
            alert(event.button);
        };
    </script>

  当我是用左键产生mousedown事件时,弹出窗口为0,中间键为1,右键为2。

七、鼠标滚轮事件

    <script>
        document.onmousewheel=function(){
            alert(event.wheelDelta);
        }; 
     </script>

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

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

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

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

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

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

  4. 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 サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。