JavaScript 自定义html元素鼠标右键菜单

自定义html元素鼠标右键菜单

实现思路

在触发contextmenu事件时,取消默认行为(也就是阻止浏览器显示自带的菜单),获取右键事件对象,来确定鼠标的点击位置,作为显示菜单的left和top值

编码实现

<!DOCTYPE html>

<html>

<head>

<meta charset="utf-8">

<script>

window.onload = function(){

var menu = document.getElementById(‘menu‘);

document.body.oncontextmenu = function(e){ // 自定义body元素的鼠标事件处理函数

var e = e || window.event;

e.preventDefault();  //阻止系统右键菜单 IE8-不支持

// 显示自定义的菜单调整位置

let scrollTop =

document.documentElement.scrollTop || document.body.scrollTop;// 获取垂直滚动条位置

let scrollLeft =

document.documentElement.scrollLeft || document.body.scrollLeft;// 获取水平滚动条位置

menu.style.display = ‘block‘;

menu.style.left = e.clientX + scrollLeft + ‘px‘;

menu.style.top = e.clientY  + scrollTop + ‘px‘;

}

// 鼠标点击其他位置时隐藏菜单

document.onclick = function(){

menu.style.display = ‘none‘;

}

}

</script>

<style>

*{

margin: 0;

padding: 0;

}

p{

margin-top: 200px;

}

ul li{

list-style-type: none;

margin: 10px 0;

text-align: center;

}

#menu{

border:1px solid #ccc;

background: #eee;

position: absolute; // 设置菜单为绝对位置

width: 100px;

height: 120px;

display: none;

}

</style>

</head>

<body style="overflow:auto">

<div id="box" style="height:5000px; width:5000px">让body元素出现滚动条用的div</div>

<div id="menu">

<ul>

<li><a href="#">分享</a></li>

<li><a href="#">收藏</a></li>

<li><a href="#">举报</a></li>

</ul>

</div>

</body>

</html>

实现效果

原文地址:https://www.cnblogs.com/shouke/p/11969871.html

时间: 2024-12-19 11:15:42

JavaScript 自定义html元素鼠标右键菜单的相关文章

jQuery自定义Web页面鼠标右键菜单

右键菜单是固定的,很多时候,我们需要自定义web页面自定义菜单,指定相应的功能. 自定义的原理是:jQuery封装了鼠标右键的点击事件(“contextmenu”),首先屏蔽浏览器原始的点击事件,接着,写自己的需要的显示的右键菜单最后,就是什么时候隐藏显示出的右键菜单了. 代码如下: <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DT

自定义菜单鼠标右键菜单打开选项

//将你想要添加到鼠标邮件的应用添加进来., 自动为Notepad增加鼠标右键菜单的打开选项 将下面的内容保存到bat批处理文件,然后将文件放到Notepad++.exe所在目录,双击运行即可. 文件内容: @echo off TITLE 自动为Notepad增加鼠标右键菜单的打开选项 cls color 0B echo 可按需要修改执行文件变量即可,目录路径会自动获取 echo 自动生卸载文件,方便不用的时候可以清除加入的注册表内容 ping 127.1 -n 3 >nul rem TheEx

OpenLayers 3 之 添加地图鼠标右键菜单

添加右键菜单,首先我们要监听鼠标右键点击的操作,我们知道鼠标右键事件名是 contextmenu,当鼠标在 html 元素之上,点击鼠标右键,便会触发 contextmenu 事件,在 contextmenu 事件的回调函数中实现相应的显示菜单功能即可. 那么在 openlayers 中,在地图中添加这个事件,我们从哪里下手呢?首先我们得了解 openlayers 的初始化页面的过程. openlayers 初始化页面过程 openlayers 也是一个前端库,那么它肯定离不开 html 的运用

禁止按键F5和禁止鼠标右键菜单 js代码

<script language="javascript"> //禁止按键F5 document.onkeydown = function(e){ e = window.event || e; var keycode = e.keyCode || e.which; if( keycode = 116){ if(window.event){// ie try{e.keyCode = 0;}catch(e){} e.returnValue = false; }else{// f

JS捕获鼠标右键菜单中的粘贴时间

常用的Ctrl+V按键的监听: 1 $(document).keydown(function(e){ 2 if( e.ctrlKey == true && e.keyCode == 86 ){ 3 console.log('Ctrl+V'); 4 return false; 5 } 6 }); 而对于鼠标右键菜单的粘贴: 1 $("#input").bind('paste', function(e) { 2 var el = $(this); 3 setTimeout(

向鼠标右键菜单增加菜单项

下了个别人集成好各种插件的Sublime Text 3编辑器,由于没有右键菜单“Edit with Sublime_text”感觉很不方便,就上网百度了下,把方面记录下!~ REGEDIT4 [HKEY_CLASSES_ROOT\*\Shell\Edit with Sublime_text] [HKEY_CLASSES_ROOT\*\Shell\Edit with Sublime_text\Command] @="E:\\Sublime Text 3\\sublime_text.exe \&qu

将Sublime Text 添加到鼠标右键菜单的教程方法

安装notepad++软件,在菜单右键自动会添加“edit with notepad++"的选项,那么怎么将Sublime Text 添加到鼠标右键菜单呢?下面是我的操作过程,希望有帮助! 1.win+R打开cmd窗口,输入regedit,打开注册表 2.依次找到HKEY_CLASSESS_ROOT->*->Shell,下面新建项,命名为Edit with Sublime Text3. 3.在项“Edit with Sublime Text”下新建字符串值,命名为Icon,值为 E:

如何添加程序到windows的鼠标右键菜单,

如何修改windows的鼠标右键菜单 当一个程序是一个绿色安装包的时候,你又要用这个软件频繁打开的文件的时候,当选择打开时,每次都要选择应用程序,会带来操作上的繁琐和不便.但是我们可以添加鼠标右键菜单,也就是,用鼠标右键点击文件,弹出来的那个菜单. 修改这个菜单,要修改windows的注册表. 在开始->运行,输入regedit,即可快速进入注册表编辑菜单. 1.找到HKEY_CLASSES_ROOT,展开,点击*,找到shell,展开,鼠标右键点击shell,点击新建,输入自己想在鼠标右键菜单

JavaScript模拟鼠标右键菜单

<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>右键菜单</title> <style type="text/css"> *{ margin: 0; padding: 0; } #menu{ width: 254px; /*background-color: #ccc;*/