移动范围,鼠标不受脚本引起的移动的干扰
Moving a range with mouse w/o being perturbed by script induced movements
>我在HTML页面中有一个范围输入,它实际上代表音乐时间线。我有一个脚本,随着音乐的进行,沿着滑块移动手柄。
现在,我希望能够移动手柄,以便在我用鼠标设置手柄的地方播放音乐。
问题是,当我开始沿着滑块拖动手柄时,一旦脚本更新了它的位置,它就会设置为它的实际位置,我就失去了对它的控制。
我该如何解决这个问题,以便我可以自由移动我的手柄?
为了播放音乐,我正在使用一个插件 soundmanager2,并且我正在使用提供的 whileplaying
回调函数来设置滑块的位置随着音乐的进行。
这是 HTML 位:
<div id="timeCtl">
<span id="timeRange">
<input id="time" type="range" value="0" min="0" max="1000"/>
</span>
<p id="timeCpt">00:00 / 00:00</p>
</div>
以及随之而来的JS:
//This is the callback function contained within an object being created
whileplaying : function() {
//This whole block processes the "position / duration" display
var dur = parseInt(this.duration/1000, 10);
var durMin = parseInt(dur/60, 10);
var durSec = dur%60;
var pos = parseInt(this.position/1000, 10);
var posMin = parseInt(pos/60, 10);
var posSec = pos%60;
if (posMin < 10)
{
posMin = "" + "0" + posMin.toString();
}
if (posSec < 10)
{
posSec = "" + "0" + posSec.toString();
}
if (durMin < 10)
{
durMin = "" + "0" + durMin.toString();
}
if (durSec < 10)
{
durSec = "" + "0" + durSec.toString();
}
var displayDur = durMin.toString() + ":" + durSec.toString();
var displayPos = posMin.toString() + ":" + posSec.toString();
g("timeCpt").innerHTML = displayPos + " / " + displayDur;
//And here is the part that take care of moving the handle
var curPos = parseInt(pos / dur * 1000, 10);
g("timeRange").innerHTML = "<input id='"time'" type='"range'" value='"" + curPos.toString() + "'" min='"0'" max='"1000'">";
//The problem is that it moves the handle while I'm dragging it and then I lose control and have to grab it again
//How to avoid that ?
}
感谢您抽出宝贵时间阅读本文,并提前感谢您的回答。
实际上,我可能已经找到了解决问题的方法。
我可以做一些事情,以便在触发 onclick 事件时,移动范围的脚本被禁用,直到触发 onrelease 事件(完全不确定事件名称,但我想找出它们到底是什么)。
我将尝试一下并使线程保持最新状态。
编辑:这有效。
- 创建一个布尔变量。 用
- 布尔变量控制的条件包围脚本的更新部分。
- 当触发滑块的 onmousedown 事件时,将布尔变量设置为 false,这将阻止脚本更新它。
- 在触发 onmouseup 时将其设置回 true,如果需要,可以进行一些额外的处理。
相关文章:
- 多个单选按钮组相互干扰
- Canvas Html5绘图应用程序,移动画布会导致重大问题
- 正在SharePoint 2013母版页中添加JQuery移动文件
- 如何在android中使用phonegap将文件从一个文件夹移动/复制到另一个文件夹
- 如何使用phaser使html5游戏在移动设备浏览器上运行
- FabricJs-限制主对象内添加对象的移动区域
- 如何从画布上的某个移动事件中获取X和Y
- 触摸移动时切换到新元素
- 每当您在选择器内移动鼠标时,悬停功能就会重复
- 停止jQuery UI滑块移动超过给定值
- 谷歌地图API v3不适用于移动浏览器或PhoneGap
- 如何将chrome扩展功能移植到移动设备(特别是jquery和trello)
- JQuery移动动态分区页面
- XMLHttpRequest在移动设备上的chrome上不起作用
- 如何使bxslider仅在移动视图中处于活动状态
- css停止图像在滚动中移动
- 物体的移动,而不受任何操作系统的干扰
- Jquery 移动干扰 JavaScript 填充选择框
- 移动范围,鼠标不受脚本引起的移动的干扰
- .htaccess文件规则是干扰菜单栏布局时,窗口移动视图