当我问this question时,我接受了答案,因为它是有意义的,文档指向的是正确的。
使用TWebBrowser测试一台使用IE6的机器与另一台使用IE7的机器,使用相同的编译可执行文件,行为确实与答案中指出的一样。
现在我再一次让人怀疑,在一台安装了IE8的机器上,同样的可执行文件被服务器识别为IE7。我写了一个简单的rails应用程序来盗版用户代理,这一点很清楚。在同一台机器上,如果我在IE中访问这个rails应用程序,它会打印:
Mozilla/4.0 (compatible; MSIE 8.0; Windows NT 6.0; Trident/4.0; GTB6.5; SLCC1; .NET CLR 2.0.50727; .NET CLR 3.5.30729; InfoPath.2; .NET CLR 3.0.30729)当我使用该可执行文件访问时:
Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 6.0; Trident/4.0; GTB6.5; SLCC1; .NET CLR 2.0.50727; .NET CLR 3.5.30729; InfoPath.2; .NET CLR 3.0.30729)此外,在朋友Process Monitor的帮助下,我意识到用来实例化TWebBrowser的分类in是{8856F961-340A-11D0-A96B-00C04FD705A2},它在windows注册表中的名称为"Microsoft Web Browser“,并指向ieframe.dll。
现在事情变得有点奇怪了。如果我转到system32/ieframe.dll并检查版本...8.0。
我真的很困惑。问题是:当我使用TWebBrowser时,会使用哪个版本的ie呢?
谢谢。
发布于 2010-09-29 22:08:37
它使用的是IE8,但处于IE7兼容模式。The IE team blogged about this在2009年3月,在那里他们还描述了如何获得IE8渲染而不是IE7默认渲染。
我还没有看到任何关于IE9在这里的行为,所以我不能说你是否需要一个不同的值来使用IE9呈现,或者是否有一些其他的值,简单地说是“最新的”,并且也获得了IE8呈现。
发布于 2010-09-29 22:02:40
也许TWebBrowser在ControlData属性中保存了创建时拥有的Useragent?请尝试在安装了IE8.0的计算机上删除控件并将其重新添加到窗体中。
在任何情况下,这些用户代理字符串看起来都奇怪地相似。它可能是相同的IE8.0引擎,不管它打印什么。
https://stackoverflow.com/questions/3821648
复制相似问题