Javascript Jquery滑块附加鼠标事件
我正在使用jquery slider,它在chromeJavascript Jquery滑块附加鼠标事件,javascript,jquery,html,jquery-ui,Javascript,Jquery,Html,Jquery Ui,我正在使用jquery slider,它在chrome浏览器中运行得很好,但是当我在firefox中运行相同的代码时,鼠标会附加一个事件,当我向左或向右移动时,它会自动滑动滚动 所以我希望它的功能和chrome一样。任何一个1都可以帮助我如何从firefox 我使用的是jquery-min.js和jquery ui.js的samve版本,即1.11.1和jquery ui.css版本1.9.1 任何人的想法或评论都是值得赞赏的 我将完整的代码粘贴到下面并设置 滑块问题 $(文档).ready(
浏览器中运行得很好,但是当我在firefox
中运行相同的代码时,鼠标会附加一个事件,当我向左或向右移动时,它会自动滑动滚动
所以我希望它的功能和chrome一样。任何一个1都可以帮助我如何从firefox
我使用的是jquery-min.js
和jquery ui.js
的samve版本,即1.11.1
和jquery ui.css
版本1.9.1
任何人的想法或评论都是值得赞赏的
我将完整的代码粘贴到下面并设置
滑块问题
$(文档).ready(函数(){
$('.sliderSpecific').slider({
动画:对,
射程:“分钟”,
步骤:parseInt(50),
幻灯片:功能(事件、用户界面){
警报(“此处的滑块为幻灯片”);
}
});
});
我能够重新创建该问题,但它不是一个bug。它是与mouseup
事件的处理方式相关的特定于浏览器的行为。实际上IE(edge)和Firefox有着相同的行为。Chrome似乎是个例外,但您仍然可以在Chrome中模拟相同的行为。我没有测试过Safari或任何其他浏览器。这归结为滑动
功能在鼠标向下
时触发。您已将该函数定义为引发警报。通常发生的情况(我猜)是,在警报打开后,您将手指从鼠标按钮上抬起,然后再次单击OK
按钮。这会导致警报的消息框处理mouseup
事件。Chrome恰巧处理得很好,允许父窗口(主浏览器窗口)接收mouseup
事件。显然Firefox和IE没有。因此,页面仍然认为鼠标按钮被按下,并且认为在关闭警报后仍在尝试使用滑块
我认为,我可以预测,你可以在chrome中模拟这一点,这证明我理解这个问题。在chrome中模拟它的方法是单击滑块并开始拖动它,但当警报打开时,不要释放鼠标按钮,而是使用空格键“单击确定按钮”。警报关闭后,在按住鼠标键的同时,从左向右移动,您将看到与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);
}
});
$(文档).ready(函数(){
//这个块不是必需的,在我的示例中只是为了完成而添加
var cnt=0;//保留唯一消息的计数
//只需为非阻塞输出消息添加一个容器
$('body')。追加('');
//结束不必要的阻塞----------------------------------------------
$('.sliderSpecific').slider({
动画:对,
射程:“分钟”,
步骤:parseInt(50),
幻灯片:功能(事件、用户界面){
//在IE/Firefox中导致意外行为
//警报(“此处的滑块为幻灯片”);
//非阻塞输出选项。。。
log('slider is slide here');
//另一个非阻塞输出选项。。。
$('div#output').html('slider在这里是slide(+(cnt++).toString()+));
//使用阻塞输出的解决方法(警报/确认)
setTimeout(函数(){
警报(“耶,延迟工作!”);
}, 0);
}
});
})) 我无法用Firefox复制这一点。我正在使用最新的v40.0.2。你用的是什么版本?我看不到你的代码,也看不到会导致鼠标悬停事件绑定的滑块小部件,更不用说只在Firefox中了。我使用的是35版,我也检查了38版。我要求你先滑动,然后点击alert中的ok,然后向左或向右移动鼠标,不点击任何地方,我相信你会看到bug。。。
$(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);
}
});