event.preventDefault()适用于Chrome,Firefox,但不适用于Safari

时间:2014-09-23 19:15:17

标签: javascript html 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"),但浏览器的缩放也会更改!< / p>

这意味着event.preventDefault();没有像它应该有效一样工作。

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

注意:我已经尝试过使用StopPropagation,但它并没有解决问题。

4 个答案:

答案 0 :(得分:1)

似乎这是ctrlKey的问题。假设你使用Mac OS X系统,你也需要检查metaKey,所以你的代码应该是:

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

答案 1 :(得分:1)

我们可能有不同的键盘布局或其他内容,但我的小键盘上的+-符号的关键代码值为107和109.(http://www.asquare.net/javascript/tests/KeyCode.html

下面的代码片段适用于我的safari。

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

答案 2 :(得分:0)

你可以试试这个:

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;
        }
      }
}

答案 3 :(得分:0)

缩放的关键代码在不同浏览器中有所不同:

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

还可以尝试:

event.stopImmediatePropagation();

防止其他处理程序执行。