我怎么能暂时阻止一个滚动的DIV的滚动?

这是我目前的情况:

我有一个包含一对夫妇滚动div的网页。 每个这些div的包含许多对象。 我使用YUI来显示弹出窗口,可以每个对象上执行的操作菜单。 每个对象具有与其关联自己的菜单被构造和显示动态。 在弹出菜单可以大,可以重叠可滚动div的边界。

从我所认为的重点问题(菜单必须是可访问),当我在位于该滚动DIV的边缘之上的操作鼠标悬停时,DIV自动滚动,移动内容,但离开菜单平稳。 试图移动菜单动态出现这种情况时是不是我想做的事情,我相信它会提供一个不好的用户体验。

所以,我需要防止这种聚焦的菜单,滚动股利。 我的想法提供最佳的用户界面,以防止这些内在的div的滚动时菜单是开放的。 这使定位在最佳位置,以显示该项目正在作用于用户的菜单。 如果用户希望滚动框,他们可以点击关闭菜单,然后进行正常滚动。

我怎样才能做到这一点? 我需要一个解决方案,在整个主流浏览器的工作原理。

我首先想到的是要听onscroll事件的特定元素。 遗憾的是,似乎没有从有一个简单的方法只是防止滚动的发生。 首先,我的Javascript事件代码出现执行已经发生的实际滚动之后。

于是,我想,既然我的代码正在运行的对象已滚动之后,我可以重新obj.scrollTopobj.scrollLeft。 果然,这似乎工作,虽然我很担心,对慢浏览器的用户将看到的div“跳围绕”里面的内容。 此外,这将是非常好的,如果量元素卷轴是事件对象的一部分。 难道是卡在那里的地方? 我正在寻找替代其存储scrollTop的和scrollLeft变量,此元素,然后使用他们,而滚动暂时禁用。

什么是解决这整个问题的最好方法是什么?

--------------解决方案-------------

简单的答案是不,你不能这样做。 它的双重没有如果你想要一个跨浏览器的解决方案。

提供与明确的启示,相信可以滚动,然后否认他们只是普通穷人的UI设计的用户。

好了,所以你的编辑后,原来你并非试图阻止用户从滚动。

主要的答案,虽然仍是如此。 这听起来好像重点是要矩形(可能是一个锚?)不是充分考虑,并导致滚动。 还有一个原因是这个矩形必须得到焦点? 对于辅助功能?

我同意安东尼关于你想禁止的功能演示。 如果你要禁用滚动,那么你应该让页面的一部分视障或删除。

为此,就可以定位在可滚动的div有问题,这将捕获鼠标事件和视觉显示,滚动股利是不活动的,现在的顶部半透明股利。 这将是很难进行跨浏览器兼容,不会是完美的,但随后又很少有客户端的把戏像这样的。

如果你没有什么溢出:滚动 ,而是你用溢出:隐藏 ,并提供滚动向上/向下按钮,允许用户滚动必要的时候? 当然,这些按钮可以容易地禁用。

虽然它可能不是你正在寻找的答案,如果你设置分区为“无”,而页面加载(从服务器)的显示值,然后必须连接到页面加载事件(无论是页面加载中ajax.net或附加到通过JavaScript onload事件),这将使格的显示设置为'块'..这将确保慢的浏览器将不会看到分区'跳来跳去'(甚至可以把一个'装'图像中的股利向用户展示它的做一些事情,而不仅仅是不可见的)

抱歉,我不能提供一个更加复杂的/流畅的解决方案。

我发现了一个方法来解决这个问题。 通过消除来自滚动DIV菜单元素,然后追加直接到document.body的,浏览器都停止尝试滚动div来揭示焦点元素(即使该元素已经完全可见)。

感谢所有您的时间和您的回答!

分类:JavaScript的 时间:2015-03-15 人气:0
分享到:

相关文章

Copyright (C) 55228885.com, All Rights Reserved.

55228885 版权所有 京ICP备15002868号

processed in 0.867 (s). 10 q(s)