Event事件學習實用路線(8)——Event事件之事件鼠標右鍵——案例:實現自定義一個右鍵菜單


鼠標右鍵




contextmenu 鼠標右鍵事件



<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
</head>
<body>
<script>
    document.addEventListener('contextmenu', function(){
        alert("鼠標右鍵事件");
    });
</script>
</body>
</html>

在瀏覽器上鼠標右鍵,先顯示"鼠標右鍵事件"對話框,後顯示默認鼠標右鍵菜單。
在這裏插入圖片描述

案例:實現自定義一個右鍵菜單



注意:需要阻止默認行爲,否則會彈出瀏覽器默認右鍵菜單!

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
    <style>
        /* 情況默認樣式 */
       *{
           margin: 0;
           padding: 0;
           list-style: none;
       }
       ul{
           width: 200px;
           border: 1px solid #000;
           position: absolute;
           top: 0;
           left: 0;
           display: none;
       }
       li{
           padding: 10px;
           border: 1px solid #333;
       }
    </style>
</head>
<body style="height: 3000px;">
    <ul>
        <li>刷新</li>
        <li>跳轉</li>
        <li>加載</li>
        <li>首頁</li>
    </ul>
<script>
{
    var ul = document.querySelector('ul');

    document.addEventListener("contextmenu", (e)=>{
        ul.style.display = 'block';
        let x = e.pageX;
        let y = e.pageY;
        ul.style.left = x + 'px';
        ul.style.top = y + 'px';

        e.preventDefault();
    });
}
</script>
</body>
</html>

在這裏插入圖片描述

另外一種阻止默認行爲的方式



        var ul=document.querySelector('ul');

        // 自定義一個右鍵菜單
        // contextmenu 鼠標右鍵事件
        document.addEventListener('contextmenu',function(e){
            // 顯示列表
            ul.style.display='block';
            // 鼠標位置
            var x=e.pageX;
            var y=e.pageY;
            ul.style.left=x+'px';
            ul.style.top=y+'px';

            // e.preventDefault()

            return false;
        })

我們發現其實並沒有阻止默認行爲。
在這裏插入圖片描述


那麼我們試試在默認的事件中寫:

{
    var ul = document.querySelector('ul');
    
    document.oncontextmenu = (e)=>{
        ul.style.display = 'block';
        let x = e.pageX;
        let y = e.pageY;
        ul.style.left = x + 'px';
        ul.style.top = y + 'px';

        return false;
    };
}

這顯然就成功了。
在這裏插入圖片描述


e.preventDefault與return false阻止默認行爲的區別



preventDefault

阻止瀏覽器默認行爲 - 標準方法

return false

在低版本瀏覽器是起效果的,但是在高版本瀏覽器中是沒有作用的,因此建議使用 e.preventDefault()

注意:在事件綁定中 return false 無法實現取消默認行爲功能,它只能在直接添加事件的方法下使用。



(後續待補充)
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章