当用户在浏览器中向下滚动时,Google Chrome不会刷新辅助功能元素(AutomationElement)。
要再现它,请执行以下操作:
通过以下方式启用渲染器辅助功能:或通过在UI自动化模式下的"chrome://accessibility"
.
我找到了一些手动解决方案,可以强制Chrome刷新它:
我正在寻找的是能够以编程的方式执行这些操作之一,或者任何可以使刷新其缓存树的操作。
我尝试过的:
带PInvoke/Redrawwindow
chrome.tabs.setZoom(null, 0);
(工作,但会使窗口闪烁和减慢)所有这些都不能正常工作。
编辑:在Windows7下测试谷歌Chrome40.XX,41.XX,42.XX,43.XX,44.XX,45.XX,46.XX,47.XX.Dev,48.XX.Dev。
发布于 2016-01-21 10:15:47
在简单页面中滚动被优化为不需要来自渲染器的计算。只需要合成器和GPU来滚动,因此只从渲染器更新的渲染树仍然是相同的。
要求渲染器在滚动期间遍历DOM并更新可访问性树,这与几年来平滑滚动的努力背道而驰,特别是对于触摸设备,因此我认为您不会从错误修复中获得支持。
我认为你的扩展想法是最好的(虽然丑陋)折衷方案。相反,改变缩放比例,对页面(或DOM)进行小的改动可能是更好的解决方案。例如,尝试添加一个z顺序较低的不可见(或接近不可见)元素。您还需要对突变进行速率控制,使其每秒只发生1次,甚至更少发生。
发布于 2015-11-24 15:29:22
Chrome的多进程架构与其他浏览器不同。出于安全性考虑,主浏览器UI在一个进程中,而网页在单独的渲染器进程中运行(通常每个选项卡一个)。渲染器进程是唯一具有网页DOM表示以及所有可访问性信息的进程,但是渲染器进程特别不允许与操作系统交互(发送或接收事件或消息)-具体地说,渲染器进程不能发送或接收可访问性事件。
https://stackoverflow.com/questions/30434961
复制相似问题