2013-03-15 140 views
2

我正在使用raphael在屏幕上绘制项目。我有包含在divoverflow: scroll中的绘图对象的容器。在除了 IE 7/8用户正在绘制它之外,所有的浏览器都不滚动。但是,在IE 7/8中,当用户拖动(即绘制线条)时,它会在用户接近边缘时自动滚动。我发现了一些jQuery的帮助,并试图覆盖div的onscroll事件,但没有奏效。拖动HTML时阻止自动滚动

我没有使用jQuery,也无法添加它。

+0

你只需要滚动在一个方向?如果是这样,你应该使用overflow-x&overflow-y – 2013-03-15 14:54:30

+0

用户可以在两个方向上滚动,但只能在他们当前没有绘制的时候滚动(也就是让鼠标“向下”) – AdamDev 2013-03-15 14:57:29

回答

2

有时滚动是由于在窗口中“选择”文本引起的(在这个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

+1

我使用了相同的理念,但不是停止整个选择开始的身体,我只清除了'mousemove'事件中使用'document.selection.empty()' – AdamDev 2013-03-15 15:04:07