Javascript 在IE和Safari中移动滚动条后不会触发mouseup事件

Javascript 在IE和Safari中移动滚动条后不会触发mouseup事件,javascript,jquery,Javascript,Jquery,我在网站上搜索了一下,但没有得到关于我的案例的有用信息。可以在上找到一个简单的演示。当我移动到div滚动条并按下鼠标时,“mousedown”事件被触发。然后我滚动条,放开鼠标。不幸的是,IE/Safari中没有触发“mouseup”事件。Chrome和Firefox运行良好。IE和Safari是否有解决方案?谢谢 示例代码: <div class="box"> <div class="box-inner"> </div> </div&g

我在网站上搜索了一下,但没有得到关于我的案例的有用信息。可以在上找到一个简单的演示。当我移动到div滚动条并按下鼠标时,“mousedown”事件被触发。然后我滚动条,放开鼠标。不幸的是,IE/Safari中没有触发“mouseup”事件。Chrome和Firefox运行良好。IE和Safari是否有解决方案?谢谢

示例代码:

<div class="box">
    <div class="box-inner">
    </div>
</div>
<p id="text"></p>

在网站上做了更多的搜索,得到了类似的结果。在这个问题上提出的一个建议并不完美,但值得一试

$(document).ready(function() {
    var $txt = $('#text'), $win = $(window), $doc = $(document);
    $win.on('mousedown', function(event) {
        $txt.text('mousedown');

        if(event.pageX < ($win.width() - 10)) {
            return;
        }

        $doc.on('mousemove', function(event) {
            if(event.pageX < ($win.width() - 10)){
                //mouse is off scrollbar
                $(this).unbind(event);
                $win.trigger('mouseup', ['manual fire']);
            }
        });
    }).on('mouseup', function(event, str) {
        $txt.text('mouseup: ' + str);
    });
});
$(文档).ready(函数(){
var$txt=$('#text'),$win=$(窗口),$doc=$(文档);
$win.on('mousedown',函数(事件){
$txt.text('mousedown');
如果(event.pageX<($win.width()-10)){
返回;
}
$doc.on('mousemove',函数(事件){
如果(event.pageX<($win.width()-10)){
//鼠标离开滚动条
$(此).unbind(事件);
$win.trigger('mouseup',['manual fire']);
}
});
}).on('mouseup',函数(事件,str){
$txt.text('mouseup:'+str);
});
});

在Safari中,
mouseup
为我开火。。。我无法在IE中测试,因为我在Mac上,但请尝试以下方法:


基本上,当您
鼠标向下时,将
mouseup
绑定到
文档
,然后在触发后移除绑定:)这样,
mouseup
始终触发,无论鼠标在哪里

只是尝试修复此问题,但没有效果。有用的阅读:为什么需要这个?我的意思是你想从“mouseup”事件中得到什么,如果你想在“滚动完成”上做一些事情,你可以使用“滚动”事件。@ucdream你找到解决方法了吗?我在IE11中遇到了同样的问题,正在寻找一个合适的解决方案。将
.on
更改为
.one
以利用jQuery自己的事件删除功能,并使代码稍微干净一些。。。我还将原始绑定更改为
.on()
,以保持一致性-这并不重要
$(document).ready(function() {
    var $txt = $('#text'), $win = $(window), $doc = $(document);
    $win.on('mousedown', function(event) {
        $txt.text('mousedown');

        if(event.pageX < ($win.width() - 10)) {
            return;
        }

        $doc.on('mousemove', function(event) {
            if(event.pageX < ($win.width() - 10)){
                //mouse is off scrollbar
                $(this).unbind(event);
                $win.trigger('mouseup', ['manual fire']);
            }
        });
    }).on('mouseup', function(event, str) {
        $txt.text('mouseup: ' + str);
    });
});
$(document).ready(function() {

    var $txt = $('#text');

    $('.box').on("mousedown.box", function() {

        $txt.text('mousedown');

        $(document).one("mouseup.box", function() {
            $txt.text('mouseup');
        });

    });


});