基于Internet Explorer的WPF WebBrowser控件会遇到一些键盘和焦点问题以及内存泄漏问题.作为这些问题的替代解决方案,我们正在考虑在基于HTML编辑的WPF/C#项目中托管Chromium而不是WebBrowser控件的可用选项.此前已经提出了类似的问题.我已经阅读了答案并完成了自己的研究,但我希望从生产质量项目中实际使用以下任何选项的人那里获得更多反馈:
它看起来非常合适,但我不喜欢这个项目不是开源的事实,并且不能轻易获得完整的资源.此外,它可能对我们的项目来说太过分了,因为屏幕外渲染不是我们真正依赖的东西.
用于CEF的Chromium Embedded Framework(CEF)和.NET绑定
这可能是目前可用的最佳选择.该项目似乎活跃且活跃,目前与Chrome v27同步.CEF3使用Chrome多进程架构.看起来Adobe似乎正在给它一些支持.
虽然它的最初目的是成为IE和Firefox的HTML5插件,但它实际上也可以作为独立的ActiveX控件使用,所以我可以将它包装起来用于WPF.它公开了足够的API以与内部网页(onmessage, addEventListener/removeEventListener, postMessage)进行交互.我知道谷歌将停止使用 Chrome Frame,但我认为这些来源将保留在Chromium存储库中.使用最新的Chromium代码更新它并不困难,我们可以完全控制它.
不完全是基于Chromium而且不使用V8引擎,所以它不是一个真正的选择.
还有其他我可能忽略的选择吗?
如果有人与上述任何选项分享她/他在实际生产质量的WPF项目中的经验,我将不胜感激.您是否有任何集成,许可或部署影响?谢谢.
[编辑] 我还要感谢artlung通过提供慷慨的赏金提议来提升这个问题.
我见过一些包含Gecko渲染引擎的COM控件(GeckoFX,以及Mozilla发布的控件 - mozctlx.dll).是否有可以包含在.NET Winform应用程序中的Webkit包装器?
我很想知道是否有像Gecko.NET这样的东西;)我的意思是,就像我们可以嵌入一个WebView,这是任何Windows窗体应用程序中的IE7"实例"(并告诉它navigateto(fancy_url);).我喜欢使用Firefox或WebKit.
有人试过吗?
更新:请记住,虽然可以使用上述控件嵌入Gecko,但使用Gecko时仍然无法打印.
更新2010年3月:仍然无法使用GeckoFX本地打印,但是根据您尝试做的事情,存在一些可能已经足够的方法.有关详细信息,请参阅:http://geckofx.org/viewtopic.php?id = 796.
更新2013年10月:我不再进行Windows开发,所以我对此没有兴趣,但似乎可以在这里找到Gecko的开发:https://bitbucket.org/geckofx,它似乎最近更新了.将此留给未来的Windows开发人员;)
更新2017年1月:我收到了一家名为TeamDev的公司的电子邮件.他们创建了一个名为"DotNetBrowser"的基于Chromium的.NET浏览器组件,可用于在Windows窗体应用程序中显示现代网页.
直接引用电子邮件:
以下是有关该组件的一些详细信息,可能会有所帮助:
免责声明: 我没有使用过这个DotNetBrowser,因为我不再进行Windows开发,但如果您正在寻找解决方案,可能值得一试.
我正在使用嵌入在C#WPF .NET4应用程序中的webbrowser控件.每当我手动按下表单中的按钮时,浏览器就会挂起"正在处理您的请求"消息并且没有任何反应.如果我在完整的IE浏览器中执行相同操作,则会正常处理页面以生成结果.我错过了什么?谢谢按钮背后的代码如下
<a onclick="startSearch();" href="javascript:void(-1);" name="btnNext" class="btn floatLe noClear btnSubmit btnRight">
<span>Continue</span>
</a>
Run Code Online (Sandbox Code Playgroud) 你能在WindowsForms的WebBrowser控件中使用Chrome Web Browser webkit引擎吗?
我正在使用System.Windows.Forms.WebBrowser处理C#.NET应用程序.
IE没有正确响应,所以我想更改为Mozilla Firefox.
我怎样才能做到这一点?
我正在尝试将Cesium嵌入到WinForms或WPF应用程序内的WebBrowser控件中(使用IE 11).作为测试我正在使用此链接:
http://cesiumjs.org/Cesium/Build/Apps/CesiumViewer/index.html?stats=true
它"有效",但比直接使用IE 11要慢得多.在IE 11中,一切都以60fps运行; 在具有WebBrowser控件的简单WPF或WinForms应用程序中,它以4-6 fps运行.我一直无法追查问题的原因.这是一个空白的窗体或WPF面板,其中WebBrowser控件设置为填充整个窗格.我无法想象没有透明度或其他问题.我注意到,在Visual Studio嵌入式浏览器中访问上述链接具有相同的效果.WebBrowser是否控制不是JIT JavaScript?这是一个WebGL问题吗?有没有办法我可以调试这个来弄清楚发生了什么?任何帮助将不胜感激.
我需要在页面上执行javascript后访问HTML文档的DOM.我有以下代码连接到URL并获取文档.问题是它在用javascript修改后永远不会得到DOM
public class CustomBrowser
{
public CustomBrowser()
{
//
// TODO: Add constructor logic here
//
}
protected string _url;
string html = "";
WebBrowser browser;
public string GetWebpage(string url)
{
_url = url;
// WebBrowser is an ActiveX control that must be run in a
// single-threaded apartment so create a thread to create the
// control and generate the thumbnail
Thread thread = new Thread(new ThreadStart(GetWebPageWorker));
thread.SetApartmentState(ApartmentState.STA);
thread.Start();
thread.Join();
string s = html;
return s;
}
protected void …Run Code Online (Sandbox Code Playgroud) 我有一个运行嵌入式Web浏览器的.NET应用程序(System.Windows.Forms.WebBrowser).我无法弄清楚如何通过按f12(相当于firebug的控制台)访问我通常可以访问的Web控制台.有没有办法实现这个?是否可以将此输出重定向到文件?
认真地 - 在尝试回答之前一直阅读问题. "使用其他浏览器"不回答这个问题.
问题是: 当我无法控制传入页面时,如何获取System.Windows.Forms.WebBrowser控件以显示嵌入了Javascript的网页?
我已经看到人们建议为IE模拟添加注册表值(允许javascript在Windows窗体Web浏览器上运行)并更改Internet选项/安全性中的脚本设置.

我已经做到了.
所以,这是测试 - 使用System.Windows.Forms.WebBrowser控件访问www.hulu.com.

我们仍然得到这个.
还有其他想法吗?