前端页面禁止鼠标拖拽事件

页面禁止鼠标拖拽、选取、复制文字等功能,主要设计如下4项参数:

1、参数 oncontextmenu

        oncontextmenu = "return false;" //禁止鼠标右键

2、参数 ondragstart

        ondragstart = "return false;" //禁止鼠标拖动

3、参数 onselectstart

        onselectstart = "return false;" //文字禁止鼠标选中

4、参数 onselect ​​​​​​​

        onselect = "document.selection.empty();" //禁止复制文本

页面中使用如下:

<body  style="margin:0 auto;padding:0 auto;overflow:hidden;" oncontextmenu = "return false;" ondragstart = "return false;" onselectstart = "return false;" onselect = "document.selection.empty();">

在网页开发中,有时我们希望禁止用户拖拽图片(例如防止图片被拖动到地址栏或其他应用中)。可以通过 CSS 和 JavaScript 来实现这一效果。最常用且高效的方式是使用 **CSS 的 `user-select` 和 `pointer-events` 属性**,结合 `ondragstart` 事件。 ### ✅ 使用 CSS 禁止图片拖拽 ```css img { -webkit-user-drag: none; /* Safari */ -khtml-user-drag: none; /* KDE HTML */ -moz-user-drag: none; /* Firefox */ -o-user-drag: none; /* Opera (not supported anymore) */ user-drag: none; -webkit-user-select: none; /* 禁止选中 */ -moz-user-select: none; -ms-user-select: none; user-select: none; pointer-events: none; /* 可选:使图片不响应鼠标事件 */ } ``` > ⚠️ 注意:仅使用上述 CSS 在某些浏览器中可能还不够,因为 `<img>` 标签默认具有可拖拽行为(尤其是 Chrome 和 Safari),所以还需要阻止 `ondragstart` 事件。 --- ### ✅ 更彻底的方法:结合 JavaScript ```html <img src="example.jpg" alt="示例图片" ondragstart="return false;"> ``` 或者通过 CSS + JS 全局禁用: #### 方法一:内联事件(简单直接) ```html <img src="photo.jpg" ondragstart="return false;" alt="不可拖拽的图片"> ``` #### 方法二:JavaScript 批量处理所有图片 ```javascript // 禁止所有图片的拖拽 document.addEventListener('DOMContentLoaded', function () { const images = document.querySelectorAll('img'); images.forEach(img => { img.ondragstart = function() { return false; }; }); }); ``` #### 方法三:使用 CSS 类 + JS ```css .no-drag { -webkit-user-drag: none; user-drag: none; user-select: none; pointer-events: none; } ``` ```html <img src="example.jpg" class="no-drag" alt="不可拖拽"> ``` ```javascript // 可选:额外确保 document.querySelectorAll('.no-drag').forEach(el => { el.ondragstart = () => false; }); ``` --- ### 📌 解释说明: - `user-drag: none`: 告诉浏览器该元素不允许被拖拽(支持性有限,主要靠 `-webkit-` 前缀生效)。 - `user-select: none`: 防止文字或图片被选中。 - `pointer-events: none`: 让元素不响应任何鼠标事件(如点击、拖拽等),如果不需要交互可以启用。 - `ondragstart="return false"`: 直接阻止拖拽开始事件,这是最可靠的方式,在 Chrome、Firefox、Safari 中都有效。 --- ### ✅ 推荐最终方案(通用且兼容性好): ```html <!DOCTYPE html> <html lang="zh"> <head> <meta charset="UTF-8" /> <title>禁止图片拖拽</title> <style> img { -webkit-user-drag: none; user-drag: none; user-select: none; /* pointer-events: none; */ /* 按需开启 */ } </style> </head> <body> <img src="https://via.placeholder.com/200" alt="占位图" /> <script> // 全局防止图片拖拽 document.addEventListener('dragstart', function(e) { if (e.target && e.target.tagName === 'IMG') { e.preventDefault(); return false; } }); </script> </body> </html> ``` > 🔍 此方法监听整个文档的 `dragstart` 事件,只要目标是 `<img>` 就阻止,默认行为更安全,无需为每张图单独绑定。 --- ### 💡 补充建议: 如果你使用的是现代前端框架(如 React、Vue),也可以这样写: #### React 示例: ```jsx <img src="photo.jpg" draggable={false} onDragStart={(e) => e.preventDefault()} alt="no drag" /> ``` #### Vue 示例: ```vue <img src="photo.jpg" :draggable="false" @dragstart.prevent /> ``` 其中 `draggable="false"` 是 HTML5 属性,对部分元素有效。 ---
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

magic33416563

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值