在Opera中使用jQuery粘贴事件异常

时间:2013-02-25 09:44:18

标签: javascript jquery html opera paste

我正在尝试这段代码。它的作用是当有人右键单击第一个文本框时,将焦点移动到第二个文本框,这样如果他从上下文菜单中选择Paste选项,则文本将粘贴到第二个框中。第{2}个帖子已附加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中,如果您直接在第二个框中粘贴一些文本,则会弹出警报。但是如果你通过第一个框执行它,即将焦点移动到第二个,同时右键单击第一个框,以便剪贴板文本粘贴在第二个框中,它不会弹出警报,即使你可以清楚地看到第二个盒子得到了焦点,文本粘贴在那里就好了。任何人都可以告诉我这是什么问题,以及如何解决它?

1 个答案:

答案 0 :(得分:1)

正如您在this fiddle中看到的那样,Opera会在右键单击的元素上触发paste事件(插入焦点移动到的文本时)。但是,正如您可以看到hereinput事件会触发您预期的元素。

  

任何人都可以告诉我这是什么问题,以及如何解决它?

您正在粘贴操作(两次单击)期间移动选择/焦点,这会混淆用户和浏览器:-)。我不确定如何解决这个异常现象,但你肯定不希望只有通过上下文菜单才能将粘贴移动到另一个输入。