我已经实现了自己的kinetic scrolling组件,通常运行得非常好。我的问题是页面中使用:active伪类的链接元素即使用户滑动并滚动屏幕(这意味着mouseup不会生成“click”),也会保持其:active状态。
目前,我已经可以避免“click”事件,但视觉反馈(:active)与行为不匹配。
因此,我需要直接或间接地通过JavaScript清除“:active”。也许通过创建一个虚拟链接并通过JavaScript“激活”它可以解决问题,但我没有成功。
为了找到解决方案,我制作了一个简单的测试用例,演示了这一点:http://jsfiddle.net/LkAXd/2/ 有什么想法吗?
请注意,我只需要适用于Webkit的解决方案。
更新
这个肮脏的hack从元素l1中清除了:active伪类(基本上是通过从文档中短暂地移除它来实现的):
问题在于
目前,我已经可以避免“click”事件,但视觉反馈(:active)与行为不匹配。
因此,我需要直接或间接地通过JavaScript清除“:active”。也许通过创建一个虚拟链接并通过JavaScript“激活”它可以解决问题,但我没有成功。
为了找到解决方案,我制作了一个简单的测试用例,演示了这一点:http://jsfiddle.net/LkAXd/2/ 有什么想法吗?
请注意,我只需要适用于Webkit的解决方案。
更新
这个肮脏的hack从元素l1中清除了:active伪类(基本上是通过从文档中短暂地移除它来实现的):
var next = l1.nextSibling;
document.body.removeChild(l1);
document.body.insertBefore(l1, next);
问题在于
document.activeElement
似乎不引用刚被mousedown的链接(它们不会通过这种方式获得焦点),所以我无法知道当前哪个元素是 :active。