net webbrowser控件与IE的区别,有什么办法让Webbrowser兼容jquery.easyui?

wylj20052006 2016-02-03 10:35:50
如题~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
...全文
477 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
coater 2017-07-31
  • 打赏
  • 举报
回复
系统装个IE11,WEBBROWSER再按照上面的方法 注册软件名称,应该是可以的吧,除非网站排除IE
wylj20052006 2017-06-15
  • 打赏
  • 举报
回复
引用 3 楼 diaodiaop 的回复:
如果你说的是微软的webbrowser 那么不可能.. 兼容不了. 他最多就是IE7(或者8) 没办法更高. 当然你可以采用别的webbrowser. 比如webkit.net 或者cef..
嗯嗯,最终我们采用了特定版本的cef,实际上是 Webbrowser + cef双核... cef高版本,遇到flash会秒闪烁,也是一堆问题, 非托管等等
wylj20052006 2017-06-15
  • 打赏
  • 举报
回复
引用 4 楼 bbjiabcd 的回复:
估计是Webbrowser的IE版本问题,请参考这里 注意:32位系统运行32位程序或64位系统运行64位程序的注册表路径为:HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Internet Explorer\MAIN\FeatureControl\FEATURE_BROWSER_EMULATION 64位系统运行32位程序的注册表路径为:HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\Microsoft\Internet Explorer\MAIN\FeatureControl\FEATURE_BROWSER_EMULATION 而如果在程序中修改注册表,直接指定前者就好,会自动修改到对应位置
这个解决不了与jquery easyui的问题,找了个有部分源代码的webbrowser,发现兼容问题的地方只能抛出异常,而没有更底层的代码; 实际上webbrowser只不过是IE的一个超轻量级的插件跟IE真的是两码事
wylj20052006 2017-06-15
  • 打赏
  • 举报
回复
引用 1 楼 wush007 的回复:
【2017-03-31 18:57, by wush】 默认情况下,webbrowser不支持jquery, html5等。试了各种方法都不行,但是经测试,简单的使用了方法二就解决了。 <meta http-equiv="X-UA-Compatible" content="IE=edge"> 方法一 加入你想让WebBrowser控件的渲染模式编程IE8的标准模式, 你可以通过设置注册表FEATURE_BROWSER_EMULATION 来实现。 示例: 注册表中注明当前本机装的IE版本 HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Internet Explorer 下面有名称为Version的项,其值为IE的版本. svcVersion =10.0.9200.16618 Version =9.10.9200.16618 [(HKEY_CURRENT_USER or HKEY_LOCAL_MACHINE)\Software\Microsoft\Internet Explorer\Main\FeatureControl\FEATURE_BROWSER_EMULATION] "MyApplication.exe" = dword 8000 (Hex: 0x1F40) 这里MyApplicaiton.exe 是你的应用程序的EXE文件名。 8000 表示8.0的渲染模式,请对照下表: IE8 Standards Mode 8000 (0x1F40) -- IE8 标准模式 (Standard Mode), IE8默认的模式 IE7 Standards Mode 7000 (0x1B58) -- IE7 兼容视图模式 (Compatible View), IE8的WebBrowser控件默认模式 IE8 Standards Mode (Forced) 8888 (0x22B8) -- IE8 强制标准模式,在渲染失败的情况下不尝试用兼容视图模式 方法二 在html头 加标签 强制使用最新的ie渲染 <meta http-equiv="X-UA-Compatible" content="IE=edge"> 强制使用最新的ie8渲染<meta http-equiv="X-UA-Compatible" content="IE=EmulateIE8"/> 修改案例: void WINAPI WriteWebBrowserRegKey(LPCTSTR lpKey,DWORD dwValue) { HKEY hk; CString str = "Software\\Microsoft\\Internet Explorer\\Main\\FeatureControl\\"; str += lpKey; if (RegCreateKey(HKEY_LOCAL_MACHINE,str,&hk)!=0) { MessageBox(NULL,"打开注册表失败!","Error",0); ExitProcess(-1); } if (RegSetValueEx(hk,"你的exe名称.exe",NULL,REG_DWORD,(const byte*)&dwValue,4)!=0) { RegCloseKey(hk); MessageBox(NULL,"写注册表失败!","Error",0); ExitProcess(-1); } RegCloseKey(hk); } WriteWebBrowserRegKey("FEATURE_BROWSER_EMULATION",9000); //WriteWebBrowserRegKey("FEATURE_ACTIVEX_REPURPOSEDETECTION",1); WriteWebBrowserRegKey("FEATURE_BLOCK_LMZ_IMG",1); WriteWebBrowserRegKey("FEATURE_BLOCK_LMZ_OBJECT",1); WriteWebBrowserRegKey("FEATURE_BLOCK_LMZ_SCRIPT",1); WriteWebBrowserRegKey("FEATURE_Cross_Domain_Redirect_Mitigation",1); WriteWebBrowserRegKey("FEATURE_ENABLE_SCRIPT_PASTE_URLACTION_IF_PROMPT",1); WriteWebBrowserRegKey("FEATURE_LOCALMACHINE_LOCKDOWN",1); WriteWebBrowserRegKey("FEATURE_GPU_RENDERING",1);
好久没来了,这个n年前的问题我最终采用了cefsharp,但是cefsharp是非托管,也是一堆问题;但基本马虎能用
bbjiabcd 2017-04-05
  • 打赏
  • 举报
回复
估计是Webbrowser的IE版本问题,请参考这里 注意:32位系统运行32位程序或64位系统运行64位程序的注册表路径为:HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Internet Explorer\MAIN\FeatureControl\FEATURE_BROWSER_EMULATION 64位系统运行32位程序的注册表路径为:HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\Microsoft\Internet Explorer\MAIN\FeatureControl\FEATURE_BROWSER_EMULATION 而如果在程序中修改注册表,直接指定前者就好,会自动修改到对应位置
by_封爱 版主 2017-04-01
  • 打赏
  • 举报
回复
如果你说的是微软的webbrowser 那么不可能.. 兼容不了. 他最多就是IE7(或者8) 没办法更高. 当然你可以采用别的webbrowser. 比如webkit.net 或者cef..
threenewbee 2017-03-31
  • 打赏
  • 举报
回复
内核是一样的,但是ie在其基础上增加了很多,比如ie支持调试,js代码里的console对象,在webbrowser里就没有
阿亮 2017-03-31
  • 打赏
  • 举报
回复
【2017-03-31 18:57, by wush】 默认情况下,webbrowser不支持jquery, html5等。试了各种方法都不行,但是经测试,简单的使用了方法二就解决了。 <meta http-equiv="X-UA-Compatible" content="IE=edge"> 方法一 加入你想让WebBrowser控件的渲染模式编程IE8的标准模式, 你可以通过设置注册表FEATURE_BROWSER_EMULATION 来实现。 示例: 注册表中注明当前本机装的IE版本 HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Internet Explorer 下面有名称为Version的项,其值为IE的版本. svcVersion =10.0.9200.16618 Version =9.10.9200.16618 [(HKEY_CURRENT_USER or HKEY_LOCAL_MACHINE)\Software\Microsoft\Internet Explorer\Main\FeatureControl\FEATURE_BROWSER_EMULATION] "MyApplication.exe" = dword 8000 (Hex: 0x1F40) 这里MyApplicaiton.exe 是你的应用程序的EXE文件名。 8000 表示8.0的渲染模式,请对照下表: IE8 Standards Mode 8000 (0x1F40) -- IE8 标准模式 (Standard Mode), IE8默认的模式 IE7 Standards Mode 7000 (0x1B58) -- IE7 兼容视图模式 (Compatible View), IE8的WebBrowser控件默认模式 IE8 Standards Mode (Forced) 8888 (0x22B8) -- IE8 强制标准模式,在渲染失败的情况下不尝试用兼容视图模式 方法二 在html头 加标签 强制使用最新的ie渲染 <meta http-equiv="X-UA-Compatible" content="IE=edge"> 强制使用最新的ie8渲染<meta http-equiv="X-UA-Compatible" content="IE=EmulateIE8"/> 修改案例: void WINAPI WriteWebBrowserRegKey(LPCTSTR lpKey,DWORD dwValue) { HKEY hk; CString str = "Software\\Microsoft\\Internet Explorer\\Main\\FeatureControl\\"; str += lpKey; if (RegCreateKey(HKEY_LOCAL_MACHINE,str,&hk)!=0) { MessageBox(NULL,"打开注册表失败!","Error",0); ExitProcess(-1); } if (RegSetValueEx(hk,"你的exe名称.exe",NULL,REG_DWORD,(const byte*)&dwValue,4)!=0) { RegCloseKey(hk); MessageBox(NULL,"写注册表失败!","Error",0); ExitProcess(-1); } RegCloseKey(hk); } WriteWebBrowserRegKey("FEATURE_BROWSER_EMULATION",9000); //WriteWebBrowserRegKey("FEATURE_ACTIVEX_REPURPOSEDETECTION",1); WriteWebBrowserRegKey("FEATURE_BLOCK_LMZ_IMG",1); WriteWebBrowserRegKey("FEATURE_BLOCK_LMZ_OBJECT",1); WriteWebBrowserRegKey("FEATURE_BLOCK_LMZ_SCRIPT",1); WriteWebBrowserRegKey("FEATURE_Cross_Domain_Redirect_Mitigation",1); WriteWebBrowserRegKey("FEATURE_ENABLE_SCRIPT_PASTE_URLACTION_IF_PROMPT",1); WriteWebBrowserRegKey("FEATURE_LOCALMACHINE_LOCKDOWN",1); WriteWebBrowserRegKey("FEATURE_GPU_RENDERING",1);

110,565

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Web++
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧