event.preventDefault()适用于Chrome,Firefox,但不适用于Safari [英] event.preventDefault() works on Chrome, Firefox, but not Safari

查看:798
本文介绍了event.preventDefault()适用于Chrome,Firefox,但不适用于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);
返回false;
}
}
}
< / script>
< p> Blah< / p>


$ b 覆盖浏览器的CTRL + PLUS的ZOOM键盘快捷键。 p>

它适用于Firefox,Chrome,但不适用于Safari:使用Safari,如果您在此页面上执行CTRL + PLUS,警报(hello )已启动,但浏览器的缩放也已更改!



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



如何使用 event.preventDefault() code>与Safari?



注意:我已经尝试过使用StopPropagation,但它不能解决问题。 / em>

解决方案

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



<$ p $ ((event.ctrlKey || event.metaKey)&&(event.keyCode == 61 || event.keyCode == 187))
c>


This HTML / JS code :

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

overrides the browser CTRL+PLUS 's ZOOM keyboard shortcut.

It works on Firefox, Chrome, but not with Safari : with Safari, if you do CTRL+PLUS on this page, the alert("hello") is launched, but the browser's zooming is also changed !

This means that event.preventDefault(); hasn't worked like it should have worked.

How to use event.preventDefault() with Safari ?

Note: I already tried as well with StopPropagation, but it doesn't solve the problem.

解决方案

Seems like this is problem with ctrlKey. Assuming you use Mac OS X system you need to check for metaKey too, so your code should be:

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

这篇关于event.preventDefault()适用于Chrome,Firefox,但不适用于Safari的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆