<!doctype html>
<html>
<head>
<meta charset="utf-8">
<title>testing</title>
</head>
<body>
<input type="checkbox" id="test">
<script>
var t = document.getElementById("test");
t.onmousedown = function(e) {
if (e.button === 0)
t.checked = true;
else if (e.button === 2)
t.checked = false;
alert(e.button);
}
</script>
</body>
</html>
如果我離開行alert(e.button);
它在哪裏,複選框點擊行爲與預期相同:都離開了,點擊選中該複選框,所有右鍵單擊取消選中該複選框。onmousedown事件事件對象的行爲出現異常
如果我刪除代碼alert(e.button);
,那麼突然間,左鍵單擊將檢查並立即取消選中該複選框,右鍵單擊將不會執行任何操作,只會打開上下文菜單。
這是爲什麼發生?以及我能做些什麼來使其行爲與第一段中描述的相同,但沒有alert(e.button);
?
'e.preventDefault()'? mousedown事件不會導致複選框發生更改,只會發生「click」事件,這是一個mousedown,後跟同一元素上的mouseup。 'alert()'會擾亂這種情況並阻止發生默認點擊。 – nnnnnn
nope,這仍然導致問題不幸 – derp
您可以嘗試取消'click'事件。但是(除了利益的緣故)你爲什麼要這樣做?更改標準控件行爲會讓用戶感到困惑,如果無法通過鍵盤或單鍵鼠標使用控件,則可訪問性會失敗。 – nnnnnn