IE中没有处理控制键+字符

时间:2013-08-13 15:28:57

标签: javascript javascript-events

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

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

我们使用的代码具有跨浏览器功能,但只有在按住Internet Explorer中的CTRL密钥时才会遇到问题。

<!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的问题?

1 个答案:

答案 0 :(得分: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 );

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

jsFiddle