2013-09-11 3 views
2

Это мой код для Chrome для обработки события вставки:Вставить событие стрельбы много раз

window.addEventListener("paste",processEvent); 
function processEvent(e) {  
     console.log("paste event!"); 
} 

Этот код работает отлично, за исключением, что событие вызывается много раз, даже если нажать команду CTRL+V только один раз. Что может быть причиной? И как я могу предотвратить это, так как очень важно, чтобы обработчик запускал только один раз за нажатие команды paste.

Update:

Я вошел в консоль, и вот что я имею в виду:

paste event! 
clipboard from event 
item found: 0 kind=file type=image/png 
found image! 
paste event! 
clipboard from event 
item found: 0 kind=file type=image/png 
found image! 
paste event! 
clipboard from event 
item found: 0 kind=file type=image/png 
found image! 

Обратите внимание, как то же самое событие происходит в 3 раза.

Update 2:

Этот код на самом деле код GWT обернута вокруг JSNI:

public native void pasteEventHandler()/*-{ 
    window.addEventListener("paste",processEvent); 
    function processEvent(e) {  
      console.log("paste event!"); 
    } 
}-*/; 

И вызывается при @PostConstruct из приложения:

@PostConstruct 
public void setup() { 
    pasteEventHandler(); 
} 

Когда паста событие происходит с «страницей» с переходом на другую страницу (от # Page1 до # Page2. Когда переход страницы назад к # Page1, setup() m Этод загорелся.

+0

Когда я говорю много раз, я имею в виду иногда два или три (3) раза – xybrek

+1

Вы уверены, что нажимаете только один раз, и вы не держите нажатой комбинацию клавиш (CTRL + V) вниз? Здесь я сделал скрипку http://jsfiddle.net/XFPkt/, и когда я нажимаю на окно результатов (справа внизу) и нажимаю ctrl + v, я получаю только одно сообщение, если только не удерживаю его нажатой. –

+1

Ваша разметка фигурных скобок неправильная. Кажется, – Shadow

ответ

1

Ну, из вашего кода я вижу дополнительные }

window.addEventListener("paste",processEvent); 
    function processEvent(e) {  
     console.log("paste event!"); 
    } 
} // what's that ? 

Может быть, что } принадлежит к for или while (или любой другой) итерации.

+0

На этот вопрос ответил @KevinB – xybrek

Смежные вопросы