簡體   English   中英

event.preventDefault()可在Chrome,Firefox和Safari上運行

[英]event.preventDefault() works on Chrome, Firefox, but not Safari

此HTML / JS代碼:

<script>
window.onload = function(e) {
window.onkeydown = function(event) {
        if (event.ctrlKey && (event.keyCode == 61 || event.keyCode == 187)) 
        {
          event.preventDefault();
          alert("hello");
          return false;
        }
      }
}
</script>
<p>Blah</p>

覆蓋瀏覽器CTRL + PLUS的ZOOM鍵盤快捷鍵。

它可以在Firefox,Chrome上運行,但不能在Safari上運行:在Safari上,如果在此頁面上執行CTRL + PLUS,將啟動alert("hello") ,但瀏覽器的縮放比例也會改變!

這意味着event.preventDefault(); 沒有像它應該的那樣工作。

如何在Safari中使用event.preventDefault()

注意:我已經嘗試過StopPropagation,但是它不能解決問題。

似乎這是ctrlKey問題。 假設您使用Mac OS X系統,則也需要檢查metaKey ,因此您的代碼應為:

if ((event.ctrlKey || event.metaKey) && (event.keyCode == 61 || event.keyCode == 187))

我們的鍵盤布局可能有所不同,但是數字鍵盤上的+-號具有鍵代碼值107和109。( http://www.asquare.net/javascript/tests/KeyCode.html

下面的代碼段對我來說適用於野生動物園。

 window.onkeydown = function (event) { if (event.ctrlKey && (event.keyCode == 107 || event.keyCode == 109)) { event.preventDefault(); alert("hello"); } } 

您可以嘗試以下方法:

window.onkeydown = function(event) {
        if (event.ctrlKey && (event.keyCode == 61 || event.keyCode == 187)) 
        {
          if (event.preventDefault){
             event.preventDefault();
          }
          else {
             event.returnValue = false;
          }
          alert("hello");
          return false;
        }
      }
}

縮放的關鍵代碼在不同的瀏覽器中有所不同:

Opera   MSIE  Firefox  Safari  Chrome 
 61     187     107     187     187      = +             
109     189     109     189     189      - _ 

也可以嘗試:

event.stopImmediatePropagation();

防止其他處理程序執行。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM