我正在使用jquery slider ,它在chrome浏览器中工作正常,但是当我在firefox中运行相同的代码时,鼠标会附加一个事件,当我移动无论
向左或向右
然后它会自动滑动滚动。
所以我希望它的功能像 Chrome 一样。任何人 1 请帮助我如何停止 firefox
我正在使用 jquery-min.js
和 jquery-ui.js
的 samve 版本,即 1.11.1
和 jquery-ui.css
版本 1.9.1
。
非常感谢任何人的想法或评论
我在下面粘贴完整的代码并设置 fiddle link
<html>
<head>
<title>slider problem</title>
<link href="https://code.jquery.com/ui/1.9.1/themes/base/jquery-ui.css" rel="stylesheet" />
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js"></script>
<script src="https://code.jquery.com/ui/1.11.1/jquery-ui.js"></script>
</head>
<body>
<div id="" class="span12 sliderSpecific ui-slider ui-slider-horizontal ui-widget ui-widget-content ui-corner-all" aria-disabled="false"> <a class="ui-slider-handle ui-state-default ui-corner-all" href="#" tabindex="-1" style="left: 0%;"></a></div>
<script type="text/javascript">
$(document).ready(function(){
$('.sliderSpecific').slider({
animate: true,
range: "min",
step: parseInt(50),
slide: function( event, ui ) {
alert(' slider is slide here');
}
});
});
</script>
</body>
</html>
最佳答案
我能够重新创建该问题,但这不是错误。它是与 mouseup
事件的处理方式相关的浏览器特定行为。实际上 IE (edge) 的行为与 Firefox 相同。 Chrome 似乎是异常(exception),但您仍然可以在 chrome 中模拟相同的行为。我还没有测试过 Safari 或任何其他浏览器。这归结为 slide
函数在 mousedown
上触发。您已将该功能定义为发出警报。通常发生的情况(我猜)是,在警报打开后,您将手指从鼠标按钮上移开,然后再次单击“确定”按钮。这会导致警报的消息框处理 mouseup
事件。 Chrome 恰好处理得很好,允许父窗口(主浏览器窗口)接收 mouseup
事件。显然 Firefox 和 IE 没有。因此,页面仍然认为鼠标按钮已按下,并认为您在关闭警报后仍在尝试使用 slider 。
我认为我可以预测你可以在 chrome 中模拟这个事实,这证明我理解这个问题。在chrome中模拟的方法是点击 slider 并开始拖动它,但是当警报打开时,不要释放鼠标按钮,而是使用空格键“单击确定按钮”。警报关闭后,仍然按住鼠标按钮,从左向右移动,您将看到与 Firefox 中相同的结果。您正在手动模拟 Firefox 处理鼠标状态的方式。
那么如何解决这个问题呢?删除警报,或将警报设置为超时,这将允许在警报消息框吞噬它之前处理 mouseup
事件...
$(document).ready(function(){
// This block isn't necessary, just adding for completion in my example
var cnt = 0; // keeping a count for unique messages
// just adding a container for non-blocking output messages
$('body').append('<div id="output"></div>');
// End unnecessary block ----------------------------------------------
$('.sliderSpecific').slider({
animate: true,
range: "min",
step: parseInt(50),
slide: function( event, ui ) {
// Causes unexpected behavior in IE/Firefox
//alert(' slider is slide here');
// Non-blocking output option...
console.log(' slider is slide here');
// Another non-blocking output option...
$('div#output').html(' slider is slide here (' + (cnt++).toString() + ')');
// Workaround for using blocking output (alert/confirm)
setTimeout(function() {
alert('yay, on a delay works!');
}, 0);
}
});
});
关于javascript - Jquery slider 附加鼠标事件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32196543/