2012-05-31 2 views
23

Как я могу обработать вставку, щелкнув правой кнопкой мыши в javascript? Я пытался с событием «onpaste» и всеми другими событиями html, но ничего не работает.Вставить событие в Javascript

+0

Вы пробовали предложенные решения? –

ответ

2

Событие не отображается по умолчанию как «onpaste» IIRC. Вы можете сделать это довольно просто в JQuery, выпуская

jQuery(document).bind('paste', function(e){ alert('paste event caught') }); 
+0

Событие вставки зафиксировано, но содержимое не может быть прочитано таким образом, как «document.addEventListener». –

29

onpaste событие должно работать во всех современных браузерах (UPD в том числе оперы> = 12,10).

Bind его в JQuery, как это:

$('#txt').on('paste', function() {console.log('text pasted!')})​ 

Вот живой пример: http://jsfiddle.net/7N6Xq/

В чистом JavaScript это будет выглядеть примерно так для современных браузеров

elem.addEventListener ("paste", handler, false); // all browsers and IE9+ 

и для старые версии IE:

elem.attachEvent ("onpaste", handler); // IE<9 

Вы также можете комбинировать его с oninput и других событий (изменения, propertychange, DragDrop и т.д.), чтобы создать относительно пуленепробиваемый отслеживания изменения содержания.


Сноски:

Opera поддерживает Clipboard API, начиная с Presto/2.10.286, что соответствует 12,10, как предложено here. Blink versions Opera (начиная с 15) также должен поддерживать его, но я не могу его протестировать, так как до сих пор нет версии Linux.

1

Я был удивлен вопросом # 4532473 был закрыт без ответа о том, что произойдет, если вы хотите захватить событие послепечатной обработки. Поскольку это, вероятно, проблема половины случаев, возможный подход в firefox (проверен) заключается в регистрации события oninput прямо внутри обработчика onpaste и удаления обработчика oninput, как только это будет выполнено.

В этом случае вместо oninput следует использовать onpropertychange. (Не проверено)

+0

Для желающих, простая реализация [afterpaste] (http://css-tricks.com/snippets/jquery/paste-events/) – PixnBits

1

Хороший чистый раствор JS (по запросу ...) доступен on the Mozilla dev site

<!DOCTYPE html> 
<html> 
<head> 
<title>onpaste event example</title> 
</head> 

<body> 
<h1>Play with this editor!</h1> 
<textarea id="editor" rows="3" cols="80"> 
Try pasting text into this area! 
</textarea> 

<script> 
function log(txt) { 
    document.getElementById("log").appendChild(document.createTextNode(txt + "\n")); 
} 

function pasteIntercept(evt) { 
    log("Pasting!"); 
} 

document.getElementById("editor").addEventListener("paste", pasteIntercept, false); 
</script> 

<h2>Log</h2> 
<textarea rows="15" cols="80" id="log" readonly="true"></textarea> 
</body> 
</html> 
Смежные вопросы