Webbrowser指定IE内核版本(更改注册表)
1:  WebBrowser 响应回车Enter键(兼容Silverlight)
在Form放置⼀个ApplicationEvents控件,
在OnMessage事件中写下⾯的代码:
uses  ActiveX
procedure TForm1.ApplicationEvents1Message(var Msg: tagMSG;
var Handled: Boolean);
const
StdKeys = [VK_TAB, VK_RETURN, VK_DELETE, VK_BACK]; { standard  keys }
ExtKeys = [VK_LEFT, VK_RIGHT]; { extended  keys }
fExtended = $01000000; { extended  key  flag }
begin
Handled  :=  False;
with  Msg  do
if  ((Message  > =  WM_KEYFIRST)  and  (Message  <=  WM_KEYLAST))  and
((wParam  in  StdKeys)  or  {$IFDEF  VER120}(GetKeyState(VK_CONTROL)  <  0)  or  {$ENDIF}
ie9浏览器手机版(wParam  in  ExtKeys)  and  ((lParam  and  fExtended)  =  fExtended))  then
try
if  IsChild(WebBrowser1.Handle,  hWnd)  then
{  handles  all  browser  related  messages  }
begin
with  WebBrowser1.Application  as  IOleInPlaceActiveObject  do
Handled  :=  TranslateAccelerator(Msg)  =  S_OK;
if  not  Handled  then
begin
Handled  :=  True;
TranslateMessage(Msg);
DispatchMessage(Msg);
end;
end;
except
end;
end;
2:如果电脑上安装了IE8或者之后版本的IE浏览器,Webbrowser控件会使⽤IE7兼容模式来显⽰⽹页内容。解决⽅法是在注册表中为你的进程指定引⽤IE的版本号。
⽐如我的程序叫做a.exe
对于32位程序
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Internet Explorer\MAIN\FeatureControl\FEATURE_BROWSER_EMULATION
对于64位程序
HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\Microsoft\Internet
Explorer\MAIN\FeatureControl\FEATURE_BROWSER_EMULATION
在对应的路径下添加你程序名字,如a.exe为名的value,DWORD值。
值选项:
10000(0×2710) IE10
9999 (0x270F) IE9 忽略html5
9000 (0×2328) IE9
8888 (0x22B8) IE8 忽略html5
8000 (0x1F40) IE8
7000 (0x1B58) IE7
1.什么是javascript脚本错误
1.1    概述
JavaScript脚本错误包含“运⾏时错误”和“语法错误”。
1.2    JavaScript“语法错误”
JavaScript语法错误是指当 JavaScript语句违反了 JavaScript脚本语⾔的⼀条或多条语法规则时导致的错误。JavaScript语法错误发⽣在程序编译阶段,在开始运⾏该程序之前。
1.3    JavaScript“运⾏时错误”
JavaScript运⾏时错误是指当 JavaScript脚本试图执⾏⼀个系统不能运⾏的动作时导致的错误。当正在运⾏脚本、计算变量表达式、或者正在动态分配内存时出现 JavaScript运⾏时错误时。
2.    为什么要屏蔽javascript脚本错误?
由于开发海纳产品时,使⽤WebBrowser和CHtmlView来展⽰页⾯,进⾏填表等操作;但是由于打开的页⾯⼤多是其他⽤户的CMS页⾯,所以难免有些有脚本错误,于是决定要来屏蔽脚本错误,提升产品的易⽤性和友好性。
3.    怎么去屏蔽javascript脚本错误?
3.1    使⽤SetSilent函数
使⽤WebBrowser或CHtmlView的SetSilent函数可以达到屏蔽脚本错误的⽬的,不过这种情况,其它提⽰信息也都不显⽰了,例如使⽤alert进⾏的错误提⽰。
如果你觉得这样能满⾜你,那么推荐使⽤这种⽅法,简单啊!
3.2    重载IOleCommandTarget的Exec函数