我有點擊深度的按鈕(即它們向下移動幾個像素:激活狀態),但它們導致問題,有時按鈕被點擊並且什麼也沒有發生。按鈕事件和點擊深度
<button>Button</button>
button:active {
margin-top: 5px;
}
我已示出的問題在的jsfiddle:
http://jsfiddle.net/helenst/vUU55/
在鍍鉻,有一個薄帶上面和下面的文字,高度等於點擊深度,其中點擊事件不要開火。 (例如,嘗試點擊'B'上方的一個或兩個像素)接收到mousedown和mouseup,但點擊不會觸發。
在Firefox和Opera中,在鼠標點擊不響應的按鈕頂部有一個大小相同的區域。我覺得這更合乎邏輯,因爲mousedown位於按鈕內部,但mouseup位於其外部。如果我在此區域點擊,但在釋放它之前將鼠標拖回到按鈕中,點擊將被激活。但是,它仍然不完全合理 - 如果我在按鈕周圍包裝容器(以便其中包含所有按鈕狀態),並檢測容器上的事件,問題仍然會發生。
如果我刪除點擊深度,一切都很好。
我想我可以讓它響應mousedown事件,然後檢測文檔上的mouseup,這可能會繞過它 - 但它違反了正常的按鈕行爲,我想要一個非javascript的解決方案。任何人都可以幫忙嗎?
在我看來,爲了觸發'click'事件,事件目標必須在'mousedown'和'mouseup'處相同。即使將處理程序綁定到容器,情況也並非如此。 –
所以你說即使我在div上處理事件,按鈕也是事件目標?有什麼方法可以改變它嗎? – helenst