我正在使用raphael在屏幕上绘制项目。我有包含在div
和overflow: scroll
中的绘图对象的容器。在除了 IE 7/8用户正在绘制它之外,所有的浏览器都不滚动。但是,在IE 7/8中,当用户拖动(即绘制线条)时,它会在用户接近边缘时自动滚动。我发现了一些jQuery的帮助,并试图覆盖div的onscroll
事件,但没有奏效。拖动HTML时阻止自动滚动
我没有使用jQuery,也无法添加它。
我正在使用raphael在屏幕上绘制项目。我有包含在div
和overflow: scroll
中的绘图对象的容器。在除了 IE 7/8用户正在绘制它之外,所有的浏览器都不滚动。但是,在IE 7/8中,当用户拖动(即绘制线条)时,它会在用户接近边缘时自动滚动。我发现了一些jQuery的帮助,并试图覆盖div的onscroll
事件,但没有奏效。拖动HTML时阻止自动滚动
我没有使用jQuery,也无法添加它。
有时滚动是由于在窗口中“选择”文本引起的(在这个SO页面上点击并从上到下拖动以查看我的意思)。我无法从描述中看出这是否是问题,而没有看到示例代码或示例代码,但您可以尝试禁用选择。
正如你所说,jQuery不适合你。如果是的话,你只需使用disableSelection()
。
对于香草JavaScript解决方案,尝试:
function disableSelection(target) {
if (typeof target.onselectstart != "undefined") { //IE
target.onselectstart = function() {
return false;
};
} else if (typeof target.style.MozUserSelect != "undefined") { //Firefox
target.style.MozUserSelect = "none";
} else { //All other ie: Opera
target.onmousedown = function() {
return false;
};
}
target.style.cursor = "default";
}
window.onload = function() {
disableSelection(document.body);
};
源(略作修改为清楚起见):Disable selection on browser using Javascript
我使用了相同的理念,但不是停止整个选择开始的身体,我只清除了'mousemove'事件中使用'document.selection.empty()' – AdamDev 2013-03-15 15:04:07
你只需要滚动在一个方向?如果是这样,你应该使用overflow-x&overflow-y – 2013-03-15 14:54:30
用户可以在两个方向上滚动,但只能在他们当前没有绘制的时候滚动(也就是让鼠标“向下”) – AdamDev 2013-03-15 14:57:29