Отключение функции вставки из контекстного меню - PullRequest
0 голосов
/ 10 ноября 2010

У меня есть одно приложение asp.net, в котором мне нужно отключить или сделать его только для чтения для опции Вставить из контекстного меню.Но я искал в интернете.Я не получил один точный метод.Пожалуйста, помогите мне решить эту проблему.Заранее спасибо

Ответы [ 3 ]

4 голосов
/ 10 ноября 2010

Короткий ответ: вы не можете этого сделать.

Браузер пользователя является его собственным, и поэтому он обладает суверенной властью взаимодействовать с вашей страницей так, как он этого хочет.Вы можете отловить события щелчка правой кнопкой мыши, чтобы предотвратить появление меню;Вы можете отлавливать события нажатия клавиш, чтобы остановить Ctrl-V (и Shift-Insert, который часто забывают) от регистрации.Однако вы не можете удалить опцию меню Правка -> Вставить, которая работает в браузере и полностью подрывает Javascript.

Не говоря уже о том, что пользователь может просто временно отключить Javascript, вставить в поле и затем снова включитьJavascript, если они хотели.

Даже если вы довольны ограничениями, вы не можете изменить фактическое контекстное меню, только запретить регистрацию правой кнопкой мыши вообще.

0 голосов
/ 30 декабря 2015

∎ Еще один способ решения этой надоедливой проблемы, используя объектно-ориентированные характеристики JavaScript

<div class="ro-editable">
  <span.....</...
  <pre....</...
</div>

<script>
  function make_editable_readonly(element){
    element.backup_innerHTML = element.innerHTML;   /* backup before editable. */
    element.contenteditable = "true";               /* editable. CTRL+A is usable (FUN!) */

    element.onautocomplete                          /* what in the world could change the content? actually lot!.. */
  = element.onchange 
  = element.oncontextmenu 
  = element.oncopy 
  = element.oncuechange 
  = element.oncut 
  = element.ondrag 
  = element.ondragend 
  = element.ondrop 
  = element.onemptied 
  = element.onkeyup 
  = element.onmouseup 
  = element.onpaste 
  = element.onreset = function restore(){ 
                        if (element.innerHTML !== element.backup_innerHTML) 
                          element.innerHTML = element.backup_innerHTML;
                      };
  }

  make_editable_readonly(
    document.querySelector('div.ro-editable')
  );
</script>
Легко! Правильно? (и с no ?y key-event "filtering" ☺):

∎ А вот JSFiddle для воспроизведения с

∎ взято из iCompile - ContentEditable И "ReadOnly"? ДА! ☕

0 голосов
/ 10 ноября 2010

Я полагаю, что невозможно отключить один элемент в контекстном меню, поэтому я думаю, что вы должны попытаться отключить все контекстное меню, например,

$(document).bind("contextmenu", function(e) {
    e.preventDefault();
});
...