[英]event.preventDefault() working in Chrome, but not in Firefox / IE
[英]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.