Delphi写注册表改变App内嵌TWebBrowser或TEdgeBrowser浏览器运行时的内部版本号
1、为何需要这么做
默认情况下,无论Win7、还是Win10,或Win11,也无论其上是否安装有IE、Edge或其它任何浏览器,只要App内部嵌入的是TWebBrowser浏览器,就会存在其对应的IE的内核版本问题,以因为此时是调用的操作系统DLL在工作。
当你加载的页面,其Javascript如果报了非语法性的错误,就说明IE的内核版本不正确,默认情况下TWebBrowser调用的IE内核为IE4.0。比如,调用百度网盘API时,Win11下App内嵌页面报错:
其实Win11默认安装时就没有安装IE浏览器,安装的是Edge浏览器。
但你的App嵌入的TWebBrowser是IE,就需要按照IE的“内核”的游戏规则来工作。当然,如果你的浏览器嵌入TEdgeWebBrowser,自然就会按Edge“内核”来工作。
2、如何客制化IE内核运行时的版本
默认情况下,IE为用户程序提供的内核版本的内部版本号为IE4.0,需要你客制化针对某个应用载入的IE的内部版本号,方法如下:
64位--------------
HKEY_LOCAL_MACHINE\SOFTWARE\WOW6432Node\Microsoft\Internet Explorer\Main\FeatureControl\FEATURE_BROWSER_EMULATION
32位--------------
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Internet Explorer\Main\FeatureControl\FEATURE_BROWSER_EMULATION
3、Delphi读写注册表方法
(略),网上一大堆。
4、附1:IE开发功能键等特征控制的注册表项
Internet Feature Control Keys (Internet Explorer) | Microsoft Docs