【发布时间】:2017-06-15 23:40:55
【问题描述】:
我已经实现了我自己的动态滚动 组件,它通常工作得很好。我的问题是页面中使用 :active 伪类的链接元素保持其 :active 状态,即使用户滑动并滚动屏幕(这意味着 mouseup 不会生成“点击”)。
目前我已经可以避免“点击”事件,但视觉反馈 (: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 显然 not 引用了刚刚获得鼠标按下的链接(他们没有那样获得焦点),所以我无法知道当前是哪个元素:活跃。
【问题讨论】:
-
我没有测试过,不过也许你可以在javascript中创建一个mouseup事件,让浏览器认为按钮被释放?
-
@Mickey:不完全一样。我只需要清除“:active”,因此假设一次只能有一个“:active”元素,将另一个元素设置为活动就足够了(但不知道如何做到这一点)。跨度>
-
@Mr Lister:刚刚试过。这会导致链接被“点击”,但不幸的是,它仍然是“:active”。
-
@FrankvanWijk 与其如此迅速地指出潜在的重复并绝对没有帮助任何人,也许您应该花点时间阅读这个问题并意识到它实际上是一个非常不同的问题。
标签: javascript css webkit css-selectors qtwebkit