Web浏览器控件中的拼写检查无法在IE11仿真下运行

问题描述 投票:5回答:1

我试图在Winforms Web浏览器控件中进行拼写检查。

这是我目前的C#代码:

try
{
    String appname = Process.GetCurrentProcess().ProcessName + ".exe";
    RegistryKey key = Registry.LocalMachine.OpenSubKey("Software\\Microsoft\\Internet Explorer\\Main\\FeatureControl\\FEATURE_BROWSER_EMULATION", RegistryKeyPermissionCheck.ReadWriteSubTree);

    object ieVal = key.GetValue(appname, null);
    MessageBox.Show(ieVal.ToString());

    if (ieVal == null || (int)ieVal != 11001)
    {
        key.SetValue(appname, 11001, RegistryValueKind.DWord);
    }

    key.Close();
}
catch
{
    MessageBox.Show("Registry stuff didn't work");
}

MessageBox.Show(webBrowser1.Version.ToString());

webBrowser1.DocumentText = "<html><head><body><div spellcheck=\"true\" style=\"width:100%; height:100%;\" contenteditable=\"true\"></div>"
            +"<script>alert(navigator.userAgent);</script>"
            +"</body></html>";

所以首先我设置正确的注册表项,以便浏览器模拟IE11

然后我添加一个div标签,其中spellcheck属性设置为true。

MessageBox.Show(webBrowser1.Version.ToString())显示的版本是:

11.0.9600.18525

Javascript显示的navigator.userAgent是:

Mozilla/5.0 (Windows NT 6.1; WOW64; Trident/7.0; rv:11.0) like Gecko

因此,似乎Web浏览器控件正在使用IE11。但是当我键入拼写检查时不起作用。

注意:当我用真正的IE运行那个html代码时,一切正常。

此外,实际浏览器上显示的navigator.userAgent是:

Mozilla/5.0 (Windows NT 6.1; WOW64; Trident/7.0; SLCC2; .NET CLR 2.0.50727; .NET CLR 3.5.30729; .NET CLR 3.0.30729; Media Center PC 6.0; .NET4.0C; .NET4.0E; rv:11.0) like Gecko

注意2:当我在Windows 10机器上运行我的应用程序时,拼写检查有效。但我需要让它在Windows 7机器上运行。

c# .net webbrowser-control internet-explorer-11 spell-checking
1个回答
0
投票

我在表单上使用WebBrowser控件时遇到了非常类似的问题,并找到了两个解决方案,每个解决方案都有不同的效果,这两个解决方案都可以使用。

  1. 在HTML中使用spellcheck=true: 将属性spellcheck=true添加到HTML或BODY或TEXTAREA标记中,取决于您希望它实现的位置,将允许对文本输入框进行拼写检查(我的测试在Windows 10上)。 请注意,文本框中的任何现有文本都没有进行拼写检查 - 您必须输入新文本。这在使用预填充文本框运行测试EXE时会引起我的注意,从而在拼写错误中没有明显的红色下划线。
  2. FEATURE_SPELLCHECK的注册表项 这确实有所不同。它允许TinyMCE中的拼写检查在我们的嵌入式Web浏览器控件中工作。它本身并没有在文本区域启用拼写检查。 请参阅下面的链接,以获取与您设置的注册表项关联的注册表项的引用。但是,它需要一个新密钥,然后需要一个与您正在运行的EXE名称相匹配的值。在我的例子中,这涉及创建FEATURE_SPELLCHECKING注册表项,然后创建名为TEST123.EXE且值为1的DWORD。 https://msdn.microsoft.com/en-us/library/ee330735%28v=vs.85%29.aspx?f=255&MSPPError=-2147217396#spellchecking 我通过下面链接的页面找到了这个,有人报告它不适用于Windows 7.请注意,此人也会尝试使用“本地用户”密钥,这在我的经验中不起作用: https://social.msdn.microsoft.com/Forums/ie/en-US/515fa4b1-2b85-46e4-a041-7dc27c4539c4/how-to-enable-spell-checker-in-web-browser-control-for-ie10?forum=ieextensiondevelopment
  3. 使用上述两种方法。 我们发现上面的方法2满足了我们的大多数需求,因为我们使用的是TinyMCE。但是,在其他应用程序中,1和2都可以结合使用以提供最多功能。
© www.soinside.com 2019 - 2024. All rights reserved.