移动端怎么样才能禁止长按后菜单 绝对能解决你的问题
来源:互联网 发布:网络科学导论期末考试 编辑:程序博客网 时间:2024/05/01 09:50
最近在做项目时,需要用到长按,但是在浏览器中长按默认会出来复制,粘贴的菜单,为达到交互效果则必须要禁用掉
百度了一下,方法有这几种,现在分析一下他们的优缺点
禁止默认事件
window.ontouchstart = function(e) { e.preventDefault(); };
这确实可以达到效果,但其他的默认事件如点击,链接统统失效
实际运用中可以针对的对你需要的部分
document.querySelector("#target").ontouchstart = function(e) { e.preventDefault(); };好了,完美解决
文字禁止选中
* { -webkit-touch-callout:none; -webkit-user-select:none; -khtml-user-select:none; -moz-user-select:none; -ms-user-select:none; user-select:none;}
这只能禁止选中文字 并不能达到效果 并且会导致苹果浏览器input不能选中的bug 改成auto也没有用
但这种方法可以用作防止复制粘贴文字的功能
阻止浏览器默认事件
event.preventDefault() 阻止默认事件,但会冒泡到上一层
$("foo").click(function(event){event.preventDefault();})
解决这个问题目前有一种简单粗暴的方法
在html中需要禁止的标签中加入ontouchstart = "return false;"就可以在大部分设备中达到效果
然而测试在三星手机中发现问题:在其禁止默认事件的同时禁止了诸如click等事件
所以,现在分析一下 return false
每次在调用return false时 其实做了3件事
event.preventDefault(); 默认行为
event.stopPropagation(); 阻止冒泡
停止回调函数执行并立即返回
js事件中。touchstart事件比click事件触发的要早,在事件绑定函数中return false会阻止后续的事件触发
在ios上有一种方法可以完美解决
a, img { -webkit-touch-callout: none; /* 禁止长按链接与图片弹出菜单 */}给你需要的盒子把标签名换成a 再给他转换成块级元素 display:block; 但该方法只能作用于ios系统
这种方法同时做到了防止盗图的功能
举一些实际中的例子 自定义鼠标右键弹出菜单样式
阅读全文
1 0
- 移动端怎么样才能禁止长按后菜单 绝对能解决你的问题
- 移动应用崩溃了,你能怎么样?
- 怎么样才能使你的项目更加顺利呢
- 个人站长的疑问:怎么样才能做一个能赚钱的网站?
- 如此热爱WiFi的你,怎么样才能让你有安全意识呢
- 怎么样解决iis要验证的问题
- 你绝对能懂的“机器学习”(二)
- 你绝对能懂的“机器学习”(三)
- 你绝对能懂的“机器学习”(四)
- 你绝对能懂的“机器学习”(五)
- MySQL不能连接的解决办法-绝对能解决
- draw9patch.bat打不开的解决办法(绝对能解决)
- 怎么样才能买到国外的股票?——这样的方法你造吗?
- 关于编译工具VC6.0和VS2010的问题能解决的帮忙一下小弟了!!绝对感激不尽
- 怎么样解决一个问题
- [原创]你绝对喜欢的FlashGet右键菜单
- 移动!何时才能用上你的公网IP?
- 你的英语口语绝对不成问题了
- leetcode 275. H-Index II
- Ubuntu grub recuse> 修复方法
- 36、java常用类-StringBuffer类和StringBuilder
- vue-cli脚手架的初次接触
- 数据库优化面试题
- 移动端怎么样才能禁止长按后菜单 绝对能解决你的问题
- 二进制中1的个数
- Spring注解开发 作用区别@Component、@Repository、@Service、@Controller
- Python 中文OCR
- Android连接库
- Keil5 IROM1 IRAM1 设置及错误JLink Warning: T-bit of XPSR is 0 but should be 1. Changed to 1.
- String,StringBuffer,StringBuilder的区别
- Android获取操作系统名称
- webstorm安装TFS及webpack快捷键