Javascript Jquery滑块附加鼠标事件

Javascript 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(

我正在使用jquery slider,它在chrome
浏览器中运行得很好,但是当我在
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);
      }
    });