【发布时间】:2013-02-25 09:44:17
【问题描述】:
我正在尝试这段代码。它的作用是当有人右键单击第一个文本框时,将焦点转移到第二个文本框,这样如果他从上下文菜单中选择Paste 选项,文本就会粘贴到第二个文本框中。 paste 事件已附加到第二个框以提醒 Foo。
<!DOCTYPE html>
<html>
<head>
<script src="//ajax.googleapis.com/ajax/libs/jquery/1.8.3/jquery.min.js">
</script>
<script>
$(document).ready(function(){
$('.foo').contextmenu(function() {
$('.boo').select();
return true;
});
$(".boo").bind("paste",function() { alert("Foo"); });
});
</script>
</head>
<body>
<input type = 'text' class = 'foo' />
<input type = 'text' class = 'boo' />
</body>
</html>
它在除 Opera 之外的所有浏览器中都能正常工作。当您右键单击并在第一个框中粘贴一些文本时,所有这些浏览器都会弹出警报。在 Opera 中,如果直接在第 2 个框中粘贴一些文本,就可以弹出警告。但是,如果您通过第一个框执行此操作,即在右键单击第一个框时将焦点转移到第二个框,以便剪贴板文本粘贴到第二个框,即使您可以清楚地看到它也不会弹出警报第二个框获得了焦点,文本被粘贴在那里就好了。谁能告诉我是什么问题,以及如何解决?
【问题讨论】:
-
Opera 浏览器不支持粘贴事件。对于 Opera,您可能可以使用 DOM 突变事件,例如DOMAttrModified 事件。
-
但是如果不支持
paste事件,当您只关注第二个框并直接将文本粘贴到其中时,如何弹出警报,通过CTRL-C CTRL-V或选择Pastefrom右键单击后的上下文菜单? -
好的,我不是 jquery 用户,但我可以想象 jquery 中的粘贴事件有一些解决方法/修复,就像在其他框架中一样。尝试调查它是如何在 jquery 的内部解决的。
-
这就是问题所在。
paste事件是paste事件,为什么焦点从另一个文本框重定向很重要?该事件仅在焦点转移后发生。因此,在这两种情况下,事件仅在第二个框获得焦点时发生。 -
@dherbolt:
paste事件已在当前 Opera 版本中实现 - 自 Presto 2.10
标签: javascript jquery html opera paste