Google Chromeはアクセシビリティ要素を更新しません(オートメーション要素) が表示されます。
再現するには:
- : を使用する
"chrome --force-render-accessibility"
か、 でグローバル アクセシビリティをオンに設定して、レンダラーのアクセシビリティを有効にします"chrome://accessibility"
。 - へ移動http://en.wikipedia.org/wiki/Google
- 開ける検査.exeUI オートメーション モード (Windows キットから) で、「関連記事へのリンク」要素を探します。
- Chromeに戻り、下部の「関連記事へのリンク」が表示されるまで下にスクロールします。
- 「関連記事へのリンク」要素が画面外にマークされています
Chrome を強制的に更新できる手動の解決策をいくつか見つけました:
- ズームを 90% に設定し、その後 100% に戻します (非常に醜い方法です)
- アクセシビリティをオフにしてからオンにする
chrome://accessibility/
私が探しているのは、これらの操作のいずれかをプログラムで実行する機能、または Chrome のキャッシュ ツリーを更新できる操作です。
私が試したこと:
- ウィンドウのサイズを変更する
PInvoke/MoveWindow
- ウィンドウを再描画
PInvoke/Redrawwindow
- Chrome 拡張機能を作成し、必要に応じて強制的に 100% にズームします
chrome.tabs.setZoom(null, 0);
(動作しますが、ウィンドウが点滅して速度が低下します)
いずれも正常に動作していません。
編集: Windows 7 上の Google Chrome 40.XX、41.XX、42.XX、43.XX、44.XX、45.XX、46.XX、47.XX.Dev、48.XX.Dev でテスト済み。
ベストアンサー1
シンプルなページでのスクロールは、レンダラーからの計算を必要としないように最適化されています。スクロールに必要なのはコンポジターと GPU のみなので、レンダラーからのみ更新されるレンダリング ツリーは同じままです。
レンダラーがスクロール中に DOM をトラバースしてアクセシビリティ ツリーを更新するように要求することは、特にタッチ デバイスでのスムーズなスクロールを実現するための数年にわたる取り組みに反するため、バグ修正が進むとは思えません。
拡張機能のアイデアは、最良の(ただし見苦しい)妥協案だと思います。ズームを変更するのではなく、ページ(または DOM)を少し変更する方がよい解決策かもしれません。たとえば、Z オーダーが低い非表示(またはほぼ非表示)の要素を追加してみてください。また、変更が 1 秒あたり 1 回またはそれ以下の頻度でしか発生しないように、変更のレートを制御する必要があります。