Skip to content

Latest commit

 

History

History
59 lines (47 loc) · 1.97 KB

File metadata and controls

59 lines (47 loc) · 1.97 KB

长按弹出菜单

移动端的页面上长按某些类型的元素时,会弹出 webview 自带的菜单,例如:普通文本长按会弹出选择复制的菜单。

客户端/元素类型 普通文本 超链接 图片
iOS 微信 选择复制 链接类型的弹出菜单(打开,拷贝等) 图片类型的弹出菜单(发送,收藏,保存等)
android 微信 选择赋值 选择复制 图片类型的弹出菜单(发送,收藏,保存等)

解决方案

禁止长按选择

*:not(input):not(textarea) {
  user-select: none; /* 禁用复制 */
  -webkit-user-select: none;
  -khtml-user-select: none;
  -moz-user-select: none;
  -ms-user-select: none;
}

禁止长按菜单(文本,链接或图片)

*:not(input):not(textarea) {
  user-select: none; /* 禁用复制 */
  -webkit-user-select: none;
  -khtml-user-select: none;
  -moz-user-select: none;
  -ms-user-select: none;
  -webkit-touch-callout: none; /* 禁止链接的长按弹出菜单 */
}
// 通过事件来取消长按菜单的默认行为
window.oncontextmenu = (event) => {
  if (event.target && /^INPUT|TEXTAREA$/.test(event.target.nodeName)) {
    return true;
  }
  event.preventDefault();
  event.stopPropagation();
  return false;
};

ps:该方法不能禁用掉微信客户端图片的长按弹出菜单。

参考文献