javascript自定義瀏覽器右鍵菜單


在書上看到document對象還有一個contextmenu事件,但是不知為什么w3school中找不到這個耶。。。

利用這個特性寫了個瀏覽器的右鍵菜單,感覺挺不錯,呵呵。。。

HTML部分(在<body></body>之間插入以下HTML):

查看代碼
<div id="menu">
    <ul>
        <li><a href="#">contextmenuitem 1</a></li>
        <li><a href="#">contextmenuitem 2</a></li>
        <li><a href="#">contextmenuitem 3</a></li>
        <li><a href="#">contextmenuitem 4</a></li>
        <li><a href="#">contextmenuitem 5</a></li>
        <li><a href="#">contextmenuitem 6</a></li>
    </ul>
</div>

CSS部分:

查看代碼
<style type="text/css">
*{margin:0;padding:0;}
#menu{position:absolute;width:150px;visibility:hidden;border:1px solid #666;border-bottom-width:0;}
#menu li{list-style:none;text-indent:1em;}
#menu li a{display:block;height:30px;line-height:30px;border-bottom:1px solid #666;text-decoration:none;color:#666;font:12px/30px tahoma;}
#menu li a:hover{background:#eee;color:black;}
</style>

JavaScript部分:

查看代碼
<script type="text/javascript">
document.oncontextmenu = function(e){
 if(window.event) e = window.event;
 var mymenu = document.getElementById("menu");
 mymenu.style.visibility = "visible";
 mymenu.style.left = e.clientX + 5 +"px";
 mymenu.style.top = e.clientY + 5 + "px";
 return false;
}
document.onclick = function(){
 var mymenu = document.getElementById("menu");
 mymenu.style.visibility = "hidden"; 
}
</script>

原理:

1.利用document.oncontextmenu將瀏覽器的右鍵菜單屏蔽(return false)。

2.在CSS中將div的visibility設置為hidden,即先把它給隱藏掉,position為absolute絕對定位,這樣我們就能很容易地控制left與top的值的了。

3.在函數中獲取menu為mymenu,visibility為可見(visible),再設置left與top和分別等於瀏覽器窗口的x,y坐標,最后再寫一個document.onclick函數,只要點擊,就將div的可見設置為(隱藏)hidden;

我分別測試了幾款瀏覽器,兼容性還好吧,下面是chrome效果圖:


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM