这可能听起来像一个愚蠢的问题,但只是听我说。
我正在尝试阻止使用鼠标中键点击链接。用户体验我之所以这样做,是因为锚点加载了AJAX内容,用户在点击它之前就不知道这一点。
问题在于:
/**
* mousedown or mouseup
*/
$(document).on("mousedown", function(e) {
if($(e.target).is("a.load-some-ajax-stuff") && e.which === 2) {
alert('Foo'); // only works if there's an alert
e.preventDefault();
}
});
/**
* click
*/
$(document).on("click", function(e) {
if($(e.target).is("a.load-some-ajax-stuff") && e.which === 2) {
e.preventDefault(); // should work, but doesn't catch middle-mouse clicks
}
});
片段
$(document).on('mousedown', "a.load-some-ajax-stuff", function(e) {
if( (e.which == 2) ) {
// alert('foo');
e.preventDefault();
}
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<a href="#" class="load-some-ajax-stuff">I won't open a new tab when you middle click me</a>
上面的Snippet似乎可以在Safari中使用,但不适用于Chrome。