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