Я установил горизонтальный перетаскиваемый div, используя скрипт ниже. В chrome все работает нормально, и изображения детей не могут быть опасными, как я установил draggable='false'
.
Когда я читаю здесь , атрибут draggable='false'
недостаточно в FireFox. Я попробовал и старый, и обновленный ответ на вышеуказанный вопрос (ondragstart="return false"
), и оба они работают над простым изображением на экране, но в моем случае я думаю, что где-то оно перекрывается скриптом drag-handlig на родительском div , Я не могу найти, где происходит конфликт, в CSS или SCRIPT.
примечание: Как вы видите в сценарии, я предполагаю, что движение меньше 8px как событие щелчка, и проблема начинается после 8px движения. На самом деле в Firefox после 8px движения, изображения обрезаются от родителя, и вы можете перетащить его в любое место в окне.
function handle_mousedown(e){
window.my_dragging = {};
my_dragging.pageX0 = e.pageX;
my_dragging.pageY0 = e.pageY;
my_dragging.elem = this;
my_dragging.offset0 = $(this).scrollLeft();
$(".catHolder").on("click",function(e){return true;});
function handle_dragging(e){
var amount=e.pageX - my_dragging.pageX0;
var left = my_dragging.offset0 - amount;
if (Math.abs(amount)>8){
$(".catHolder").one("click",function(e){return false;});
}
$(my_dragging.elem).scrollLeft(left);
}
function handle_mouseup(e){
$(".catHolder").on("click",function(e){return true;});
$(window).off('mousemove', handle_dragging).off('mouseup', handle_mouseup);
}
$(window).on('mouseup', handle_mouseup).on('mousemove', handle_dragging);
}
$(document).ready(function(){$(".catHolder").mousedown(handle_mousedown);})
.catHolder{
width:400px;
max-width:100%;
border:5px solid #ff8800;
-webkit-overflow-scrolling: touch;
white-space:nowrap;
overflow-x:auto;
overflow-y:hidden;
}
.noselect{
-webkit-touch-callout: none;
-webkit-user-select: none;
-khtml-user-select: none;
-moz-user-select: none;
-ms-user-select: none;
user-select: none;
}
.catSquare{
display:inline-block;
}
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<div class="catHolder">
<div class="catSquare noselect">
<a href="#" draggable="false">
<table>
<tr><td><img ondragstart="return false" draggable="false" src="https://www.codesd.com/static/img/logo.jpg"></td></tr>
<tr><td>text</td></tr>
</table>
</a>
</div>
<div class="catSquare">
<a href="#" draggable="false">
<table>
<tr><td><img ondragstart="return false" draggable="false" src="https://www.codesd.com/static/img/logo.jpg"></td></tr>
<tr><td>text</td></tr>
</table>
</a>
</div>
<div class="catSquare">
<a href="#" draggable="false">
<table>
<tr><td><img ondragstart="return false" draggable="false" src="https://www.codesd.com/static/img/logo.jpg"></td></tr>
<tr><td>text</td></tr>
</table>
</a>
</div>
<div class="catSquare">
<a href="#" draggable="false">
<table>
<tr><td><img ondragstart="return false" draggable="false" src="https://www.codesd.com/static/img/logo.jpg"></td></tr>
<tr><td>text</td></tr>
</table>
</a>
</div>
<div style="clear:both"></div>
</div>