【发布时间】:2013-09-11 12:25:50
【问题描述】:
这是我的 Chrome 处理粘贴事件的代码:
window.addEventListener("paste",processEvent);
function processEvent(e) {
console.log("paste event!");
}
此代码工作正常,除了事件被触发多次,即使我只按一次CTRL+V 命令。可能是什么原因?以及如何防止这种情况发生,因为每次按下粘贴命令时处理程序只触发一次非常重要。
更新:
我登录到控制台,这就是我的意思:
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 次的。
更新 2:
这段代码实际上是一个包裹在 JSNI 上的 GWT 代码:
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() 方法被启动。
【问题讨论】:
-
当我说多次时,我的意思是有时两次或三 (3) 次
-
你确定你只按一次而不按住粘贴快捷键(CTRL+V)吗?在这里我做了一个小提琴jsfiddle.net/XFPkt,当我点击结果窗口(右下方)并按 ctrl+v 时,我只会收到一条消息,除非我一直按住它。
-
你的大括号标记似乎是错误的哥们
-
也许你出于某种原因多次添加了事件监听器......
-
在添加事件侦听器之前添加另一个控制台行。
console.log("adding event listener");window.addEventListener("paste",processEvent);你看到控制台出现了 3 次吗?我的魔法球说是。
标签: javascript jquery gwt errai