2013-07-16 2 views
0

Я знаю, что есть много вопросов, которые задают вопрос о том, как предотвратить режим автопрокрутки, который активирует Firefox, когда страница больше, чем область просмотра, и вы нажимаете среднюю кнопку мыши.Захват событий для колесика мыши, когда Firefox автопрокручивает

Но мне действительно нужно просто обнаружить событие mouseup, когда активна автопрокрутка. Событие просто не распространяется, поэтому я не знаю, когда (и что более важно), когда кнопка мыши отпущена.

Я мог бы также согласиться на обнаружение, когда режим автопрокрутки исчез, а использование мыши вернется в нормальное состояние.

Я подготовил Plunk, чтобы играть. Когда он начнется, средний клик в любом месте и текст в поле будет обновляться. Если вы нажмете кнопку, на странице будет добавлено больше контента: средний щелчок активирует автопрокрутку, и событие mouseup будет потеряно навсегда.

Link

ответ

1

ли это даст результат?

$(selector).live('mouseup', function(e) { 

    if(e.which == 1) { 

     alert("left"); 

    }if(e.which == 3) { 

     alert("right button"); 

    }else if(e.which == 2) { 

     alert("middle button"); 

    } 

    e.preventDefault(); 

}); 
+1

'.live' устарела и удалена. – Neal

+0

То же самое здесь. Третье «предупреждение» никогда не выполняется при автопрокрутке. –

1
$(document).ready(function(){ 

$("your id").on('mousedown', function(e) { 
    if((e.which == 1)) { 
    alert("left button"); 
    } else if((e.which == 3)) { 
    alert("right button"); 
    } else if((e.which == 2)) { 
     alert("middle button"); 
    } 
    e.preventDefault(); 
}).on('contextmenu', function(e){ 
    e.preventDefault(); 
}); 
}); 

http://jsfiddle.net/p49nF/

Надежда, это помогает. !!!

+0

Используйте '.on' вместо' .bind' - это больше _standard_ путь сейчас. – Neal

+0

@ Нил: это нормально? –

+0

w00t :-D lookin хороший. – Neal

0

Got it.

Даже ответ «Питера» неверен, он дал мне правильную идею.

По какой-то причине, если вы preventDefault() в обработчике mousedown, то начинает работать рабочий стол mouseup.

$(document) 
    .on("mousedown", function(e) { 
     if (e.which !== 2) return; 
     $("#h").text("MouseDown"); 
     e.preventDefault(); 
    }).on("mouseup", function(e) { 
     if (e.which !== 2) return; 
     $("#h").text("MouseUp"); 
    }); 

Plunk with the solution

+0

Рад, вы получили свой ответ. +1 к pietrs, если это помогло. –

+0

Я тоже: теперь получил больше, но он может ждать: D Я вижу, что ваша скрипка также использовалась .preventDefault() Она просто не воспроизводила проблему, которую я имел. –

+0

Решения важны..не их ресурсы. Хорошая удача в вашем проекте –

Смежные вопросы