如何禁用h5页面在UC浏览器上长按弹出菜单复制功能?

input框禁用粘贴功能,同时禁用页面长按出现复制菜单
a337dc9611ef888cd815dd91bdbf6f4a.jpg

阅读 2.6k
avatarAI BotBETA

这个问题涉及到浏览器(在这种情况下是UC浏览器)的行为,以及如何禁用特定的HTML元素(在这种情况下是input元素)的特定功能。以下是如何实现这些功能的步骤。

1. 禁用长按弹出菜单复制功能

要禁用长按弹出菜单复制功能,你需要使用JavaScript来拦截并阻止默认的触摸事件行为。这可以通过监听touchstarttouchend事件并检查事件对象的preventDefault()方法来实现。

document.addEventListener('touchstart', function(e) {
    if (e.target.tagName !== 'INPUT') {
        e.preventDefault();
    }
}, { passive: false });

这段代码将阻止在非input元素上的长按复制行为。但是,请注意,这可能会对页面的其他触摸事件产生副作用。

2. 禁用 input 框的粘贴功能

要禁用input元素的粘贴功能,你可以使用JavaScript来拦截并阻止默认的粘贴事件行为。这可以通过监听paste事件并检查事件对象的preventDefault()方法来实现。

var inputs = document.getElementsByTagName('input');
for (var i = 0; i < inputs.length; i++) {
    inputs[i].addEventListener('paste', function(e) {
        e.preventDefault();
    });
}

这段代码将阻止所有input元素的粘贴行为。但是,请注意,这可能会对其他使用粘贴功能的场景产生副作用。

总结

以上两段代码可以分别实现禁止长按复制和禁止粘贴的功能,但请注意,这些操作可能会影响到用户的其他正常操作,因此在实际使用时需要谨慎考虑。

3 个回答

// 禁止长按复制
document.addEventListener('contextmenu', function(e) {
e.preventDefault();
});

// 禁止粘贴
document.addEventListener('paste', function(e) {
e.preventDefault();
});

新手上路,请多包涵

长按复制是浏览器 甚至 某些手机的功能,从代码层面不好解决,简单一点的办法把这一部分改成图片。

禁止选择文字即可

你顶部bar的选择器{
    -moz-user-select:none; /*火狐*/
    -webkit-user-select:none; /*webkit浏览器*/
    -ms-user-select:none; /*IE10*/
    -khtml-user-select:none; /*早期浏览器*/
    user-select:none;
}
撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题