Google Chrome ne rafraîchit pas les éléments d'accessibilité ( AutomationElement ) lorsqu'un utilisateur fait défiler vers le bas dans le navigateur.
Pour le reproduire:
"chrome --force-render-accessibility"
Ou en définissant l'accessibilité globale sur "chrome://accessibility"
.J'ai trouvé des solutions manuelles qui peuvent forcer Chrome pour le rafraîchir:
chrome://accessibility/
Ce que je recherche, c'est la possibilité d'effectuer l'une de ces opérations par programme, ou toute opération qui peut faire Chrome actualiser son arborescence de cache.
Ce que j'ai essayé:
PInvoke/MoveWindow
PInvoke/Redrawwindow
chrome.tabs.setZoom(null, 0);
(fonctionne mais clignote et ralentit la fenêtre)Aucun de ces éléments ne fonctionne correctement.
[~ # ~] modifier [~ # ~] : testé avec Google Chrome 40.XX, 41.XX , 42.XX, 43.XX, 44.XX, 45.XX, 46.XX, 47.XX.Dev, 48.XX.Dev sous Windows 7.
Le défilement dans des pages simples est optimisé pour ne pas nécessiter de calcul à partir du rendu. Seuls le compositeur et le GPU sont nécessaires pour faire défiler, donc l'arbre de rendu qui n'est mis à jour qu'à partir du rendu est toujours le même.
Obliger le moteur de rendu à traverser le DOM et à mettre à jour l'arborescence d'accessibilité pendant un défilement va à l'encontre de l'effort de défilement régulier de plusieurs années, spécialement pour les appareils tactiles, donc je ne pense pas que vous allez obtenir une traction sur une correction de bogue.
Votre idée d'une extension, je pense, est le meilleur compromis (bien que laid). Mais plutôt que changer de zoom, faire une petite mutation de la page (ou DOM) pourrait être une meilleure solution. Essayez par exemple d'ajouter un élément invisible (ou presque) avec un ordre z faible. Vous devrez également contrôler la mutation afin qu'elle ne se produise que 1 fois par seconde ou encore moins souvent.