H5移动端禁止长按弹出系统菜单“选择复制“,“在浏览器打开“

H5web页中由于项目需求,需要实现一个长按弹出自定义菜单供用户选择操作的功能,此功能可用jQuery的touchstart,touchmove,touchend三个触碰事件外加时间器实现

研究css3得出只需在需要禁止的页面中加入如下cssy样式定义

body {

-webkit-touch-callout:none;/*系统默认菜单被禁用*/

-webkit-user-select:none;/*webkit浏览器*/

-khtml-user-select:none;/*早起浏览器*/

-moz-user-select:none;/*火狐浏览器*/

-ms-user-select:none;/*IE浏览器*/

user-select:none;/*用户是否能够选中文本*/

}

此段css样式加入后能解决ios下手机浏览器,微信浏览器长按出现选择系统菜单问题,但是对于Android下微信浏览器还会出现不兼容问题

需在禁用页面加入一段js事件处理如下:
 

document.οncοntextmenu=function(e){

    e.preventDefault();

};

oncontextmenu 事件在元素中用户右击鼠标时触发并打开上下文菜单。此处用于阻止菜单的出现.

HTML5移动端实现按选中文档内容以及拖动选择功能,通常需要结合JavaScript库,比如`Hammer.js`,它是一个触摸事件处理库。以下是基本步骤: 1. 引入必要的库文件:首先,在HTML中引入`Hammer.min.js`库,用于处理触控事件。 ```html <script src="https://cdnjs.cloudflare.com/ajax/libs/hammerjs/2.0.8/hammer.min.js"></script> ``` 2. 设置元素可交互:在需要支持按和拖动选择的元素上添加CSS样式,使其变为可交互,并初始化Hammer实例。 ```javascript const selectionArea = document.getElementById('selection-area'); const hammer = new Hammer(selectionArea); // 配置Hammer实例 hammer.get('pinch').set({ enable: false }); hammer.on('longpress', function(e) { // 按时触发的回调 }); hammer.on('dragstart dragend dragmove', function(e) { // 拖动过程中触发的回调 }); ``` 3. 按开始和结束处理:当用户按时,可以选择文档的一部分文本,并记录起始位置。释放手指时,检查是否满足选择条件。 ```javascript let startOffset = null; hammer.on('longpress', function(e) { const position = e.gesture.center; // 获取触点坐标 startOffset = { x: position.x, y: position.y }; // 开始选择区域,例如选择一个矩形区域 const selectionStart = document.caretRangeFromPoint(position.x, position.y); }); hammer.on('dragend', function(e) { if (startOffset) { const endPosition = e.gesture.center; // 结束选择区域,获取选择的文本 const selectionEnd = document.caretRangeFromPoint(endPosition.x, endPosition.y); // 根据选择范围提取文本 const selectedText = selectionArea.innerText.substring( selectionStart.startContainer.textContent.indexOf(startOffset.y), selectionEnd.endContainer.textContent.indexOf(endPosition.y) ); console.log('Selected text:', selectedText); } }); ``` 4. 实现限制拖动选择:为了防止用户意外地选择整个页面,可以在`dragmove`事件中添加边界检测,仅允许在指定区域内拖动。 注意:这只是一个基础示例,实际应用可能需要考虑更多细节,如处理移动设备的滚动、浏览器兼容性和用户体验优化等。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值