我已经实现了我自己的动态滚动组件,该组件通常运行良好。我的问题是页面中使用:active 伪类的链接元素保持其活动状态,即使用户滑动并因此滚动屏幕(这意味着鼠标不会生成“点击”)。
目前我已经可以避免“点击”事件,但视觉反馈(:有效)与行为不符。
所以我需要通过JavaScript直接或间接清除“:active”。也许创建一个虚拟链接并通过JavaScript“激活”它可以解决问题,但我没有运气。
要找到解决方案,请创建一个简单的测试用例来演示:http://jsfiddle.net/LkAXd/2/
有什么想法吗?
注意我只需要一个适用于Webkit的解决方案。
这个脏黑客清除了元素l1
中的:active pseudoclass(基本上是从文档中删除它):
var next = l1.nextSibling;
document.body.removeChild(l1);
document.body.insertBefore(l1, next);
问题是,document.activeElement
显然不引用刚刚获得mousedown的链接(它们没有那么关注),所以我无法知道当前哪个元素是:活跃。
答案 0 :(得分:1)
我不确定我是否完全明白你要做的是什么,但你可以使用document.querySelector
来获取活动元素。
将以下代码添加到您的测试用例中对我有用:
var aEl = document.querySelector("a:active"), // Active Element
nEl = aEl && aEl.nextSibling, // The node following it
pEl = aEl && aEl.parentNode; // The parent node
if (aEl && pEl) {
pEl.removeChild(aEl);
pEl.insertBefore(aEl, nEl);
}
工作演示:http://jsfiddle.net/AndyE/LkAXd/3/
由于您标记了webkit,我假设您可以控制环境,而不必担心旧版浏览器。