0

在尝试听用户点击CTRL V输入字段中的键(粘贴)时,我们遇到了让 IE 处理该事件的问题。

我希望这个解决方案能够跨浏览器兼容。

我们使用的代码支持跨浏览器,但只有CTRL在 Internet Explorer 中按住键时才会遇到问题。

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
  <head>
    <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
    <title>Untitled Document</title>
  </head>

  <body>
    <input type="text" id="mytest" />
    <script type="text/javascript">
    window.onload = function()
    {
      var main_box = document.getElementById('mytest');
      window.addEventListener('keypress', 
        function(evt)
        {
          evt = evt || window.event;
          var charCode = evt.keyCode || evt.which;
          var charStr = String.fromCharCode(charCode);
          if(evt.ctrlKey && (charStr == 'v' || charStr == 'V'))
          {
            alert("CTRL+V pressed.");               
          }
        }
      );
    }
    </script>
  </body>
</html>

有没有人知道如何解决 IE 的问题?

4

1 回答 1

0
window.addEventListener('keydown',
function(evt)
{
    evt = evt || window.event;
    var charCode = evt.keyCode || evt.which;
    var charStr = String.fromCharCode(charCode);
    if(evt.ctrlKey && (charStr == 'v' || charStr == 'V'))
    {
        alert("CTRL+V pressed.");               
    }
}, false );

注意: onkeypress 事件并非针对所有浏览器中的所有键(例如 ALT、CTRL、SHIFT、ESC)触发。要仅检测用户是否按下了某个键,请改用 onkeydown 事件,因为它适用于所有键。

jsFiddle

于 2013-08-13T15:44:39.083 回答