导航:
论坛 -> Web应用开发
斑竹:bodies
作者:
vmao (毛小毛)
★☆☆☆☆
-
盒子活跃会员
2016/4/10 21:07:07
标题:
EmbeddedWB如何强制使用最新IE内核?
浏览:3008
加入我的收藏
楼主:
我做的一个管理类数据库应用程序。另外有一个用angularjs做得购物网站。老板突发奇想,在我的应用程序内嵌入这个购物网站。 我满以为简单的,就嵌入一个EmbeddedWB。 结果发现,EmbeddedWB不支持angularjs网站,但是浏览器打开又是可以的,于是上网查询,发现EmbeddedWB是用IE7渲染的,哪怕你客户端装了最新版本的IE,他照样用IE7内核,矢志不渝。网上的方案是修改注册表,指定特定的IE内核。 但是我这个程序是绿色程序,而且Win7以后修改注册表不是那么容易的事情,很多客户都是域管理的,又要麻烦IT人员一个一个去修改,实在不是个好方案。 我整个人都不好了,各位家人有办法么?有没有什么办法强制EmbeddedWB使用最新内核?用其它浏览器内核又要强制安装相应的浏览器,IE那么通用。
----------------------------------------------
-
作者:
2016/4/10 21:18:05
1楼:
DCEF3最佳选择。
----------------------------------------------
Delphi4Linux Delphi三层/FireDAC 技术群:734515869 http://www.cnblogs.com/rtcmw
作者:
vmao (毛小毛)
★☆☆☆☆
-
盒子活跃会员
2016/4/10 21:43:46
2楼:
找到方法了,在页头加入 <meta http-equiv="X-UA-Compatible" content="IE=8" /> 指定IE版本,有人说下面这个也可以 <meta http-equiv="X-UA-Compatible" content="IE=edge"> 实际不行,原因不深究了,我的问题解决了。 DCEF3应该还要装谷歌浏览器吧,这个不好,毕竟IE是自带的。
----------------------------------------------
-
作者:
lsuper (lsuper)
★☆☆☆☆
-
盒子活跃会员
2016/4/10 22:19:45
3楼:
DCEF3 绿色的,唯一不爽体积大了些 ~
----------------------------------------------
-
作者:
2016/4/11 8:02:14
4楼:
dcef3 原始控件 有个 无法打开post请求网页的问题。楼上大侠研究过吗?
----------------------------------------------
我打的是酱油,而不是别的什么油。 我灌的是口水,而不是别的什么水。 我聊的折腾不是那个不折腾的折腾。 我说的阿娇不是那个邓玉娇的阿娇。 3个代表,6个为什么,9个肠胃炎。 D性强的领导干部都不喜欢热比娅。 我特别要讲的是,屁民网黄色论坛是我经常上网必选的 网站之一
作者:
2016/4/29 14:09:17
5楼:
支持楼主大侠。。。
----------------------------------------------
kittyapp
作者:
2016/4/29 16:12:57
6楼:
呵呵,你能改对方的网页?? 不能的话就只能老老实实的去整注册表吧。。。除了Win10,以下的版本添加版本兼容设置不需要管理员权限。。。。
----------------------------------------------
-
作者:
vmao (毛小毛)
★☆☆☆☆
-
盒子活跃会员
2016/4/30 22:23:52
7楼:
幸好这个网站也是我公司产品,要不然只能哭昏在厕所了。
----------------------------------------------
-
作者:
2016/11/13 12:37:11
8楼:
在页头加入 <meta http-equiv="X-UA-Compatible" content="IE=8" /> 没有别的办法了么
----------------------------------------------
XE7发布会视频:http://i.youku.com/u/UMzYzNTkyNTI0/videos  ;FireDac/EMS-[Delphi]技术群 257779952 appmethod[移动开发] 194191706
作者:
2016/11/13 16:27:43
9楼:
改注册表可以实现的
----------------------------------------------
-
作者:
2016/11/13 23:45:26
10楼:
改注册表可以实现的 能指点一下吗,好像 WebBrowser1里面的方法行不通
----------------------------------------------
XE7发布会视频:http://i.youku.com/u/UMzYzNTkyNTI0/videos  ;FireDac/EMS-[Delphi]技术群 257779952 appmethod[移动开发] 194191706
作者:
2016/11/14 1:23:23
11楼:
function TFrmmain.WriteAppNameToReg:Boolean; var reg:TRegistry; sPath,sAppName:String; Sver:string; lenver:Integer; begin Result:=True; reg:=TRegistry.Create; try reg.RootKey:=HKEY_LOCAL_MACHINE; sPath:='SOFTWARE\Microsoft\Internet Explorer\MAIN\FeatureControl\FEATURE_BROWSER_EMULATION'; if isWin64 then sPath:='SOFTWARE\Wow6432Node\Microsoft\Internet Explorer\MAIN\FeatureControl\FEATURE_BROWSER_EMULATION'; if reg.OpenKey(sPath,True) then begin sAppName:=ExtractFileName(Application.ExeName); Sver:=GetIEVersionStr; lenver:=StrToInt(leftstr(Sver, Pos('.',Sver)-1)); // if not reg.ValueExists(sAppName)then if lenver<=7 then reg.WriteInteger(sAppName,7000) else if lenver=8 then begin reg.WriteInteger(sAppName,8000) end else if lenver=9 then begin reg.WriteInteger(sAppName,9000) end else if lenver=10 then begin reg.WriteInteger(sAppName,10000) end else if lenver=11 then begin reg.WriteInteger(sAppName,11001) end; end; reg.CloseKey; finally FreeAndNil(reg); end; 这个是使用 WebBrowser的代码,能支持到IE11
----------------------------------------------
XE7发布会视频:http://i.youku.com/u/UMzYzNTkyNTI0/videos  ;FireDac/EMS-[Delphi]技术群 257779952 appmethod[移动开发] 194191706
作者:
2016/11/14 10:15:33
12楼:
楼上,你这样写是可以,但还有一占要注意,Win10需要程序具有管理员权限,不然可能无法写入。。。。可以试一下。。。我原来在Win8上写的类似代码,正常写入,但到Win10就不行了。。。需要第一次管理员权限一下(写入),第二次就不用写了,直接运行就可以,后来还做了一个提示功能(如果没写入就报)。。。另外,你这样写,只针对Win32程序,没考虑Win64程序的问题吧。。。
----------------------------------------------
-
作者:
2016/11/14 10:18:31
13楼:
if isWin64 就是 win32 exe考虑 win64 下运行。 如果你是 64 exe ,那么去掉这个 iswin64 就行了。 sPath:='SOFTWARE\Microsoft\Internet Explorer\MAIN\FeatureControl\FEATURE_BROWSER_EMULATION'; {$IFDEF WIN32} if isWin64 then sPath:='SOFTWARE\Wow6432Node\Microsoft\Internet Explorer\MAIN\FeatureControl\FEATURE_BROWSER_EMULATION'; {$ENDIF} 简单至极。 另外,如果你不希望你的 EXE 需求 管理员权限,那么可以另外写一个 特殊的 EXE 包含管理员权限的请求,只做这些 信息的配置功能,你的 主 EXE 调用就可以了。
----------------------------------------------
(C)(P)Flying Wang
作者:
2016/11/14 10:21:01
14楼:
是的,老猫,我想就是说他没有考虑到win64下面。64位程序的问题呀。他只是考虑了32位程序在不同位数系统下的情况。 其实只要考虑一个参数: if TurnOffWOW64Redir then MySamDesiredAccess := KEY_WRITE or KEY_WOW64_64KEY else MySamDesiredAccess := KEY_WRITE; 先读取程序自身的位数,然后用上面的就可以解决了。。就不用分开写两个注册项了。 另外,另一个程序调用太没意思了。。。我当时的做法是,遇到不能写入的情况,提醒用户右键用管理员权限运行一次程序就可以了。
----------------------------------------------
-
作者:
2016/11/14 10:34:08
15楼:
楼上的代码好像最新版本的 DELPHI 内部就有。 也就是说,新版本的 DELPHI 不需要我们考虑 WIN32 WIN64 了。
----------------------------------------------
(C)(P)Flying Wang
作者:
2016/11/14 12:59:46
16楼:
是有,或者,这个本身就是系统API里带过来的东西。。。总之一话,Wow6432Node这个最好不要自己来填写。。。感兴趣的可以看一下这一篇文章:http://www.cnblogs.com/walfud/articles/2311065.html (虽然不是Delphi的)
----------------------------------------------
-