首頁>Program>source

我正在使用此代碼檢查按键按下狀態,並在按键按下時顯示字元串" Pressed"。

<body onKeyDown="doKey(window.event.keyCode)" onKeyUp="doKey2(window.event.keyCode)">
<script>
function doKey($key) {
  document.getElementById('keydown').innerHTML='Pressed';
}
function doKey2($key) {
  document.getElementById('keydown').innerHTML='';
}
</script>
<div id="keydown"></div>

問题是由於某種原因,它只能在Chrome上執行.我认為'window.event.keyCode'不返迴任何內容.我如何至少也可以在Firefox中執行它? 谢谢

最新回復
  • 9天前
    1 #

    <html>
        <body onKeyDown="doKey(event)" onKeyUp="doKey2(event)">
        <script>
        function doKey(e) {
            evt = e || window.event; // compliant with ie6        
            document.getElementById('keydown').innerHTML = evt.keyCode+' Pressed';
        }
        function doKey2(e) {
            document.getElementById('keydown').innerHTML='';
        }
        </script>
        <div id="keydown"></div>
        </body>
    </html>
    

    如果我们通過了 event 作為引數,大多數現代瀏覽器都可以正常執行.我已经使用Chrome 12,Firefox 4,IE 7/8/9进行了測試.

  • 9天前
    2 #

    某些瀏覽器具有全域性事件物件,其他瀏覽器將事件物件作為引數發送给事件處理程式. Chrome和Internet Exlporer使用前者,Firefox使用後者。

    某些瀏覽器使用 keyCode ,其他人使用 charCode

    使用 arguments[0] 拾取作為引數發送的事件物件,如果那裏没有物件,則有一个全域性物件:

    onkeydown="doKey(arguments[0] || window.event)"
    

    在方法中,您可以檢查 keyCodecharCode

    function doKey(event) {
      var key = event.keyCode || event.charCode;
      ...
    }
    

    請註意小寫名稱 onkeydown .如果您使用的是XHTML,則事件名稱必须小寫,否則瀏覽器可能会忽略它。

  • 9天前
    3 #

    我已经遇到了同樣的問题,因為我敢肯定,成千上万的編碼人員也有。

    問题是瀏覽器(不是IE)不類似window.event。

    我正在四處尋找解決方案(這是我偶然發現的一種方法),並且發現了以下內容(到目前為止):

    1)編寫JQuery:

       $(document).keyup(function(e) {
            var GetKey = e.keyCode;
    `enter code here` 
            }
        });
    

    2)重新定義键變數:

    var key = (window.event) ? evt.keyCode : evt.which;
    

    我尝試了JQuery解決方案.在FF中似乎還可以,但是我仍在尝試解決IE中的一个意外錯誤.我還没有尝試第二種解決方案.接下来,如果我無法使JQuery正常工作。

  • php:从会话儲存檔案中讀取会话資料
  • java:如何基於Content-type添加响應頭; 在提交响應之前获取Content-type