Как обнаружить правую кнопку мыши + вставить с помощью JavaScript?

Есть ли способ обнаружить правый клик, за которым следует вставка с JavaScript в IE и Firefox?

Update:

Я решил использовать JQuery для этого:

$('#controlId').bind('paste', null, function() {
    // code
});

Это не совсем то, что я искал (потому что он запускается на "ctrl + v", а также в "правом клике + вставить", но я могу обойти его.

Протестировано в Chrome, Firefox 3, IE 7 и IE 6 и работает

Ответ 1

С IE у вас есть onpaste

С Mozilla вы можете посмотреть в oninput и

elementReference.addEventListener("DOMCharacterDataModified", function(e){ foo(e);}, false);

Нет простого решения для пирога.

Эрик

Ответ 2

Мне нравится это решение:

$('#txt_field').bind('input propertychange', function() {
   console.log($(this).val());
});

Ответ 3

$('#controlId').bind('paste', null, function(e) {
    if(!e.keyCode){
       /*
          since no key was down at the time of the event we can assume it was
          from the toolbar or right click menu, and not a ctrl+v
       */
    }
});

Ответ 4

Используйте setTimeout(), установите малый тайм-аут до заполнения значения .val() func.

$(document).on('paste blur keyup', '#controlId', function(event) {
    var element = $(event.target);
    setTimeout(function() {
        var text = $(element).val();
        // do something with text
    }, 100);
});

Источник: Ввод вставки вставки

Ответ 5

У меня была такая же проблема в IE8. Chrome позволил мне распознать правую кликовую кнопку, но IE8 не был.

Мне удалось исправить проблему с помощью JQUERY, используя функцию отключения мыши, как описано Aaron, но вот код:

for IE8:
    $( "#field" ).mouseleave(function() {
                doStuff());
            });

for Chrome:
    $('#field').bind('input',function() {
                doStuff();
            });

Ответ 6

Я сделал следующее, которое срабатывает только на mouseup:

onmouseup="jQuery(this).on('paste',function(event){setTimeout(function(){alert('Paste detected!');},100);});"

Ответ 7

Дешевый взлом (который работает), который вы можете попробовать:

  • Функция jQuery mouseleave.

Я заметил с IE8, что если вы щелкнете правой кнопкой мыши в текстовом поле, а затем выберите "вставить", это задерживает событие "mouseleave" до завершения пасты. Поэтому он последовательно срабатывает сразу после пасты!:) Работает для меня и на самом деле избавляет меня от неприятностей.

Это только для приложения интрасети, которое я не тестировал в Firefox и т.д.

Приветствия