ปัญหาต้นไม้แคชที่สามารถเข้าถึงได้ของ Google Chrome กับ UI Automation


154

Google Chrome จะไม่รีเฟรชองค์ประกอบการเข้าถึง ( AutomationElement ) เมื่อผู้ใช้เลื่อนลงในเบราว์เซอร์

ในการทำซ้ำ:

  1. เปิดใช้งานการเข้าถึง renderer กับ หรือโดยการตั้งค่าในการเข้าถึงทั่วโลกที่"chrome --force-render-accessibility""chrome://accessibility"
  2. ไปที่http://en.wikipedia.org/wiki/Google
  3. เปิดinspect.exeใน UI Automation Mode (จาก Windows Kits) ค้นหาองค์ประกอบ "ลิงก์ไปยังบทความที่เกี่ยวข้อง"
  4. กลับมาที่ Chrome เลื่อนลงจนกว่าจะเห็น "ลิงก์ไปยังบทความที่เกี่ยวข้อง" ที่ด้านล่าง
  5. องค์ประกอบ "ลิงก์ไปยังบทความที่เกี่ยวข้อง" ถูกทำเครื่องหมายบนหน้าจอ

ฉันพบวิธีแก้ปัญหาด้วยตนเองที่สามารถบังคับให้ Chrome รีเฟรช:

  1. ตั้งค่าซูมเป็น 90% จากนั้นตั้งค่ากลับเป็น 100% (น่าเกลียดมาก ๆ )
  2. ปิดการช่วยสำหรับการเข้าถึงจากนั้นเปิดใหม่ chrome://accessibility/

สิ่งที่ฉันกำลังมองหาคือความสามารถในการดำเนินการอย่างใดอย่างหนึ่งเหล่านี้โดยทางโปรแกรมหรือการดำเนินการใด ๆ ที่สามารถทำให้ Chrome รีเฟรชแคชทรี


สิ่งที่ฉันได้ลอง:

  • ปรับขนาดหน้าต่างด้วย PInvoke/MoveWindow
  • วาดหน้าต่างใหม่ด้วย PInvoke/Redrawwindow
  • สร้างส่วนขยายของโครเมี่ยมและบังคับให้ซูมตามความต้องการ 100%: chrome.tabs.setZoom(null, 0);(ทำงาน แต่กระพริบและทำให้หน้าต่างช้าลง)

สิ่งเหล่านี้ไม่ทำงานอย่างถูกต้อง

แก้ไข : ทดสอบกับ Google Chrome 40.XX, 41.XX, 42.XX, 43.XX, 44.XX, 45.XX, 46.XX, 47.XX.Dev, 48.XX.Dev ภายใต้ Windows 7


13
คุณควรรายงานสิ่งนี้ถึงข้อบกพร่องในการช่วยการเข้าถึงของโครเมี่ยมบน Windows: code.google.com/p/chromium/issues/…
ไซมอน Mourier

5
คุณสามารถแบ่งปันข้อมูลเกี่ยวกับสิ่งที่คุณพยายามทำเมื่อคุณแก้ไขปัญหาได้หรือไม่ อาจจะมีวิธีแก้ปัญหา ...
DoronG

@ Ksv3n โปรดโพสต์ลิงก์ไปยังข้อผิดพลาดที่คุณโพสต์
Mauricio Gracia Gutierrez

@ Ksv3n คุณลองทำแบบทดสอบเดียวกันบนเบราว์เซอร์อื่นบ้างหรือไม่? Firefox อาจจะเป็นอย่างไร
PseudoAj

@Emzor ขอบคุณที่พยายามทำการแก้ไข แต่โปรดงดเว้นจากการแก้ไขเล็กน้อยเพื่อให้ลิงก์ดู "ดีกว่า" บางครั้งลิงก์จะแสดงได้ดีกว่าในแบบเต็มเพื่อให้ผู้ใช้สามารถคัดลอกและวางได้ถ้าต้องการ
gitsitgo

คำตอบ:


1

การเลื่อนหน้าเว็บอย่างง่ายถูกปรับให้เหมาะสมเพื่อไม่ต้องใช้การคำนวณจากโหมดแสดงภาพ เฉพาะผู้แต่งและ GPU ที่จำเป็นในการเลื่อนดังนั้นแผนภูมิการเรนเดอร์ซึ่งได้รับการอัพเดตจาก renderer เท่านั้นจะยังคงเหมือนเดิม

ต้องการให้โหมดเรนเดอเรเตอร์สำรวจ DOM และอัปเดตทรีการเข้าถึงในระหว่างการเลื่อนทำงานซึ่งมีความพยายามหลายปีในการเลื่อนอย่างราบรื่นเป็นพิเศษสำหรับอุปกรณ์ระบบสัมผัสดังนั้นฉันไม่คิดว่าคุณจะได้รับแรงฉุดในการแก้ไขบั๊ก

ความคิดของคุณเกี่ยวกับส่วนขยายที่ฉันคิดว่าดีที่สุด (แม้ว่าน่าเกลียด) การประนีประนอม แต่แทนที่จะเปลี่ยนการซูมการทำหน้าที่กลายพันธุ์เล็กน้อยของหน้า (หรือ DOM) อาจเป็นทางออกที่ดีกว่า ลองตัวอย่างเช่นการเพิ่มองค์ประกอบที่มองไม่เห็น (หรือเกือบจะ) ด้วยลำดับ z ต่ำ คุณจะต้องให้คะแนนการควบคุมการกลายพันธุ์ดังนั้นจึงเกิดขึ้นเพียง 1 ครั้งต่อวินาทีหรือน้อยกว่า


1
การทำลายการเข้าถึงเมื่อมีการถามอย่างชัดเจนในการกำหนดค่าหรือพารามิเตอร์ในชื่อของการเลื่อนแบบ smother นั้นไม่ดี
manuell

1
@ manuell นั่นคือเหตุผลที่มีนามสกุลอยู่ เมื่อลำดับความสำคัญของคุณทำงานตรงข้ามกับลำดับความสำคัญของเบราว์เซอร์ที่คุณสามารถใช้ ลูกค้าของคุณติดตั้งสัญญาณส่วนขยายที่พวกเขาเห็นด้วยกับคุณและไม่ได้อยู่กับทีม Chrome
AlienRancher

-1

สถาปัตยกรรมแบบหลายกระบวนการของ Chrome แตกต่างจากเบราว์เซอร์อื่น ๆ เพื่อความปลอดภัย UI ของเบราว์เซอร์หลักอยู่ในขั้นตอนเดียวและหน้าเว็บจะทำงานในกระบวนการเรนเดอร์แยกต่างหาก กระบวนการ Renderer เป็นกระบวนการเดียวที่มีการแสดง DOM ของหน้าเว็บดังนั้นข้อมูลการเข้าถึงทั้งหมด แต่กระบวนการ renderer ไม่ได้รับอนุญาตให้โต้ตอบกับระบบปฏิบัติการโดยเฉพาะ (การส่งหรือรับเหตุการณ์หรือข้อความ) - โดยเฉพาะ renderer กระบวนการไม่สามารถส่งหรือรับเหตุการณ์การเข้าถึงได้

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.