0
這個小型的JavaScript頁面包含A
標籤,通過使用左右箭頭可以點擊或訪問這些標籤。在這兩種情況下都應該調用相同的函數。目前的解決方案是把重點()上向左或向右箭頭,並調用相同功能onmousedown事件和的onfocus:在javascript中打斷一連串事件
function tab(e) { //incomplete, just for illustration purposes
var as = document.getElementById("areas");
if (e.keyCode === 37 || e.keyCode === 39) {
as.firstChild.focus();
...
}
...
a.onmousedown = mousedown;
a.onfocus = mousedown;
這具有這樣的不方便的點擊的標籤也將關注它,並該函數將被調用兩次。
function mousedown(e) {
if (Date.now() - lastEvent < 100) {
return;
}
else {
lastEvent = Date.now();
}
...
這是目前的解決方案:從mouseDown()調用的時代記住毫秒,如果另一個呼叫到達小於100ms以後,它必須是相同的用戶點擊時onmousedown事件和聚焦狀態的連續。
有沒有更好的解決方案? e.cancelbubble = true;
將不起作用,因爲這是兩個不同的事件。有沒有辦法阻止整個事件鏈?我覺得單線程會比這次更優雅 - 記住黑客。
謝謝。
*「'e.cancelbubble = true;'不起作用,因爲這是兩個不同的事件。」*而且它僅僅是IE瀏覽器。 –