Контекстное меню выбора текста по умолчанию на мобильном устройстве в браузере

#javascript

Вопрос:

Как отключить контекстное меню выбора текста в браузере? Возможно ли это?

Вот как выглядит меню выбора текста:

введите описание изображения здесь

Ответ №1:

Это очень просто, вам просто нужно добавить атрибут выбора пользователя в класс css. Вот небольшой код с p и диапазоном, а также тегом, который невозможно выбрать.

 p{
  user-select: none;
}

span{
  user-select:none;
} 
 <html>
  <head>
      <meta charset="utf-8">
  </head>
  <body>
  <!--Full text is unselectable-->
  <p>This full text is unselectable</p>
  
  <!--A part of text is unselectable-->
  <div>Hello i am selectable but i am <span>unselectable.</span></div>
  </body>
</html> 

Комментарии:

1. хорошее решение 🙂

2. @crystalthinker Спасибо

3. Но сейчас я не могу выделить текст, мне нужно отключить только собственное меню выбора текста

4. Я даю на это другой ответ. Надеюсь, вы не против использовать javascript

Ответ №2:

Функция поиска в вашем браузере jsut выполняет поиск определенной строки, а затем выбирает текст. Вы можете использовать user-select CSS-свойство для изменения поведения выделенного текста. Другой возможности для этого нет. Но вы должны тщательно проверить, совместим ли он с необходимыми вам браузерами и операционными системами.

https://caniuse.com/?search=user-select

Ответ №3:

Еще один запрос по требованию @OnengLar. Вот лишь небольшой трюк, чтобы сделать это с помощью js и html.

 function clicked(event){
  event.preventDefault();
  //Custom popup here
  alert('Right clicked me');//For now just showing an alert
} 
 <html>
<head>
<meta charset="utf-8">
</head>
<body>
<span oncontextmenu="clicked(event);">Select me and see my different behaviour</span>
</body>
</html> 

Ответ №4:

Вы можете отключить это contextmenu событие, чтобы пользователи не могли взаимодействовать с вашей страницей. Вы можете включить этот документ в широком объеме или только для некоторых элементов.

 document.addEventListener('contextmenu', event => {
  event.preventDefault()
}) 
 <div>Some text that you can't right click or touch interact with</div>