【问题标题】:How to make JAWS screen reader recognize and read content of cefsharp ChromiumWebBrowser control?如何让 JAWS 屏幕阅读器识别和阅读 cefsharp ChromiumWebBrowser 控件的内容?
【发布时间】:2017-02-10 16:08:31
【问题描述】:

我有一个包含 cefsharp ChromiumWebBrowser 组件的 winforms 应用程序。我想让 JAWS 阅读它的内容。现在 JAWS 只读取主窗口的标题。有什么办法可以做到这一点?我尝试了“force-renderer-accessibility”标志,但它没有帮助我。

这是我尝试过的代码:

var settings = new CefSettings()
        {
            CefCommandLineArgs = { new KeyValuePair<string, string>("force-renderer-accessibility", "true") }
        };            
        Cef.Initialize(settings, performDependencyCheck: false, browserProcessHandler: null);

【问题讨论】:

  • 你的代码有什么问题?为什么它不起作用?
  • 默认情况下,浏览器在不同的消息循环中运行。在消息循环的一般使用指南中搜索详细信息

标签: winforms accessibility cefsharp jaws-screen-reader


【解决方案1】:

按照上面amaitland的提示,我们找到了以下解决方案。

禁用 MultiThreadedMessageLoop - 然后您需要根据下面的粗略示例定期调用 DoMessageLoopWork。

        var settings = new CefSettings()
        {
          MultiThreadedMessageLoop = false
        };            
        Cef.Initialize(settings);

        browser = new ChromiumWebBrowser ("https://url.com/");

        var t = new Timer {Interval = 5};
        t.Start();
        t.Tick += t_Tick;

        this.panel1.Controls.Add(browser);

    }

    void t_Tick(object sender, EventArgs e)
    {
        this.BeginInvoke((Action) (() => Cef.DoMessageLoopWork()));
    }

【讨论】:

  • DoMessageLoopWork 应该每秒运行大约 60 次,即大约每 16 毫秒运行一次。跑步太频繁会产生无法预料的后果。
  • 好的,这是很好的信息,谢谢。我不确定。
猜你喜欢
  • 1970-01-01
  • 2013-10-10
  • 2012-04-11
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-04-09
  • 1970-01-01
相关资源
最近更新 更多