TWebBrowser(TEmbeddedWB)控件中的拼写检查器

3

Internet Explorer 10内置了拼写检查器,并且它的工作很好。我尝试创建一个小的HTML页面,以以下内容进行测试:

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<HTML lang=en xml:lang="en" xmlns="http://www.w3.org/1999/xhtml"><HEAD>
<META name=GENERATOR content="MSHTML 10.00.9200.16721"></HEAD>
<BODY spellcheck=true contentEditable=true style="MARGIN: 0.5em">
<P>Theze ara mispeled wordz</P>
</BODY></HTML>

只需要添加属性 spellcheck=truecontentEditable=true 即可。
我还尝试添加了 <meta http-equiv="X-UA-Compatible" content="IE=10" />
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<HTML lang=en xml:lang="en" xmlns="http://www.w3.org/1999/xhtml"><HEAD>
<meta http-equiv="X-UA-Compatible" content="IE=10" />
<META name=GENERATOR content="MSHTML 10.00.9200.16721"></HEAD>
<BODY spellcheck=true contentEditable=true style="MARGIN: 0.5em">
<P>Theze ara mispeled wordz</P>
</BODY></HTML>

为此,使用IE=edge而不是IE=10并没有任何区别:What does <meta http-equiv="X-UA-Compatible" content="IE=edge"> do? 然后我尝试在注册表中添加设置FEATURE_BROWSER_EMULATIONhttp://www.west-wind.com/weblog/posts/2011/May/21/Web-Browser-Control-Specifying-the-IE-Version 这改善了某些具有CSS样式(如border-radius)的元素的渲染效果,所以至少我可以看到它处于IE10模式,但拼写检查仍然无法工作。
上述页面在Internet Explorer浏览器中正常工作,并且拼写检查正在工作。
但是,当相同内容加载到TWebBrowser(我使用TEmbeddedWB,但它只是相同的包装器)中时,它不起作用。
经过反复搜索,仍未找到解决方案。您知道WebBrowser控件是否支持此功能吗?我需要在Windows 7上工作的解决方案,而不仅仅是Windows 8。我已经看到了注册表项FEATURE_SPELLCHECKING,但它仅适用于Windows 8。
是否有任何可行的替代解决方案可以在TWebBrowser控件的DesignMode中工作?我正在寻找像Word或其他程序中的曲线红色下划线一样的东西,并提供可能的GUI窗口来提供替代单词。

2
Web Browser Control 默认使用 IE 7 渲染模式,也许你需要将其切换到更高的渲染模式。请查看本文:http://www.west-wind.com/weblog/posts/2011/May/21/Web-Browser-Control-Specifying-the-IE-Version - kobik
谢谢,我不知道这个设置。它有助于使我的编辑器更符合要求。但不幸的是,它对拼写检查器没有作用。我还添加了<META http-equiv="X-UA-Compatible" content="IE=10">(如果没有它-它就不起作用)。现在我可以看到曲线边框半径,但拼写检查仍然无法工作。 - Coder12345
你应该发布你尝试过的内容。 - Marcus Adams
1
你尝试过 FEATURE_SPELLCHECKING 吗? - noseratio - open to work
1
从您的链接中:“对于Windows 8及更高版本,FEATURE_SPELLCHECKING功能控制Internet Explorer和托管Web浏览器控件(WebOC)的应用程序的此行为。当完全启用时,此功能会自动纠正语法问题并识别先前描述的条件下的拼写错误。”。它是针对Windows 8的,不适用于Windows 7。虽然在Windows 8上可能有效,但我也需要在Win 7上使用它。 - Coder12345
显示剩余3条评论
2个回答

5
抱歉,你在这里运气不佳。 关于“FEATURE_SPELLCHECKING”和Windows 7的问题,Microsoft Connect上已经有了bug报告。不幸的是,该报告被关闭并标记为“按设计开发”状态。
以下是来自Microsoft官方的答复:
感谢您的反馈。经过进一步审核,拼写检查功能仅支持Windows 8及更高版本,不支持Windows 7。因为拼写检查功能是内置于Windows 8平台中的。
此致
互联网浏览器团队

谢谢。我想我会寻找其他将拼写检查器实现到浏览器控件中的方法。 - Coder12345
你好,能否解释一下为什么在 Windows 7 的 IE 11 原生版本中(而不是嵌入 WebBrowser 控件的版本中)仍然有拼写检查? - Bằng
Microsoft Connect的链接已经失效了。有人知道如何检索该链接上的信息吗?谢谢。 - Bằng
嗨,Cong Bang DO,看起来链接确实已经失效了,所有关于这个主题的微软社交帖子都链接到了Connect文章。你遇到了什么问题? - whosrdaddy
嗨@whosrdaddy,我在Windows 7上的应用程序中嵌入了IE,但无法激活拼写检查。我只是想看到链接以向我的团队验证,在嵌入式浏览器上不支持拼写检查。你有什么想法吗? - Bằng
1
@CongBangDO,这就是为什么我在我的回答中复制了Microsoft的声明。如果你使用的是Windows 7,那么你就没戏了。在W7上,IE通过包含一个扩展来解决这个问题,但是在嵌入式浏览器上你没有这个选项... - whosrdaddy

2

尝试在注册表中更改它...

再见 Nicolas Perichon

HKEY_LOCAL_MACHINE(或HKEY_CURRENT_USER) SOFTWARE Microsoft Internet Explorer Main FeatureControl FEATURE_BROWSER_EMULATION contoso.exe =(DWORD)000090000

10001(0x2711)Internet Explorer 10。无论!DOCTYPE指令如何,网页都以IE10标准模式显示。 10000(0x02710)Internet Explorer 10。包含基于标准的!DOCTYPE指令的网页以IE10标准模式显示。 Internet Explorer 10的默认值。

Microsoft信息: msdn.microsoft.com/en-us/library/ee330730%28VS.85%29.aspx#browser_emulation


我已经尝试过在32位和64位注册表中都使用了它。它可以改善渲染(例如border-radius可以正常工作),但不会添加拼写检查功能。 - Coder12345

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接