标签: webbrowser-control

用更好的浏览器替换.NET WebBrowser控件,比如Chrome?

有没有相对简单的方法将现代浏览器插入.NET应用程序?

据我了解,该WebBrowser控制是一个包装IE,这不会是一个问题,但它看起来是一个很老版本的IE浏览器,以及所有在CSS螺丝起坐方面需要,潜在的安全风险(如果渲染引擎没有打补丁,我真的可以期待修复多个缓冲区溢出问题吗?)和其他问题.

我正在使用Visual Studio C#(快速版 - 它在这里有什么不同吗?)

我想在我的应用程序中集成一个好的Web浏览器.在某些情况下,我只是使用它来处理用户注册过程,与我的网站的一些功能和该订单的其他东西的接口,但我有另一个应用程序,需要更多错误...控制.

我需要:

  • 可以集成到我的应用程序窗口内的浏览器(不是单独的窗口)
  • 对CSS,js和其他Web技术的良好支持,与任何现代浏览器相同
  • 基本浏览器功能,如"导航","返回","重新加载"......
  • 自由访问页面代码和输出.

我正在考虑Chrome,因为它属于BSD许可证,但我会对最新版本的IE感到满意.

尽可能地,我想保持简单.最好的情况是,如果一个人可以修补现有的WebBrowser控制,这已经占我所需要的约70%,但我不认为这是可能的.

我找到了一个用于Mozilla的activeX控件(http://www.iol.ie/~locka/mozilla/control.htm),但看起来它是一个旧版本,所以它不一定是一个改进.

我愿意接受建议

.net c# webbrowser-control winforms

419
推荐指数
11
解决办法
41万
查看次数

使用WPF/C#嵌入Chromium而不是IE WebBrowser控件的选项

基于Internet Explorer的WPF WebBrowser控件会遇到一些键盘和焦点问题以及内存泄漏问题.作为这些问题的替代解决方案,我们正在考虑在基于HTML编辑的WPF/C#项目中托管Chromium而不是WebBrowser控件的可用选项.此前已经提出了类似的问题.我已经阅读了答案并完成了自己的研究,但我希望从生产质量项目中实际使用以下任何选项的人那里获得更多反馈:

AwesomiumAwesomium.NET

它看起来非常合适,但我不喜欢这个项目不是开源的事实,并且不能轻易获得完整的资源.此外,它可能对我们的项目来说太过分了,因为屏幕外渲染不是我们真正依赖的东西.

用于CEF的Chromium Embedded Framework(CEF).NET绑定

这可能是目前可用的最佳选择.该项目似乎活跃且活跃,目前与Chrome v27同步.CEF3使用Chrome多进程架构.看起来Adobe似乎正在给它一些支持.

谷歌的Chrome Frame

虽然它的最初目的是成为IE和Firefox的HTML5插件,但它实际上也可以作为独立的ActiveX控件使用,所以我可以将它包装起来用于WPF.它公开了足够的API以与内部网页(onmessage, addEventListener/removeEventListener, postMessage)进行交互.我知道谷歌将停止使用 Chrome Frame,但我认为这些来源将保留在Chromium存储库中.使用最新的Chromium代码更新它并不困难,我们可以完全控制它.

WebKit .NET包装器

不完全是基于Chromium而且不使用V8引擎,所以它不是一个真正的选择.

还有其他我可能忽略的选择吗?

如果有人与上述任何选项分享她/他在实际生产质量的WPF项目中的经验,我将不胜感激.您是否有任何集成,许可或部署影响?谢谢.

[编辑] 我还要感谢artlung通过提供慷慨的赏金提议来提升这个问题.

c# wpf google-chrome webbrowser-control chromium-embedded

155
推荐指数
5
解决办法
12万
查看次数

禁用HTML元素上的拖放?

我正在开发一个Web应用程序,我正在尝试实现一个功能齐全的窗口系统.现在它进展顺利,我只遇到一个小问题.有时当我去拖动我的应用程序的一部分(通常是我的窗口的角落div,它应该触发调整大小操作)时,Web浏览器变得聪明并认为我的意思是拖放一些东西.最终结果,我的操作被搁置,而浏览器执行拖放操作.

是否有一种简单的方法来禁用浏览器的拖放?理想情况下,我希望能够在用户点击某些元素时关闭它,但重新启用它,以便用户仍然可以在我的窗口内容上使用浏览器的常规功能.我正在使用jQuery,虽然我无法找到它浏览文档,但如果你知道一个纯粹的jQuery解决方案,那就太棒了.

简而言之:我需要在用户按下鼠标按钮时禁用浏览器文本选择和拖放功能,并在用户释放鼠标时恢复该功能.

javascript css jquery webbrowser-control

98
推荐指数
5
解决办法
17万
查看次数

在WebBrowser控件中禁用JavaScript错误

我正在开发一个带有WebBrowser控件的Windows应用程序,该控件可导航到sharepoint站点.
我的问题是我收到了JavaScript错误.

如何禁用JavaScript错误?我不想让它们弹出来.

.net c# webbrowser-control winforms

98
推荐指数
3
解决办法
13万
查看次数

IE9 WebBrowser控件是否支持IE9的所有功能,包括SVG?

我最近升级到IE9-beta.现在,在我的.Net(3.5)WinForm应用程序中,我想使用WebBrowser控件.

所以我的问题是,WebBrowser控件是否会展示IE9的所有属性和功能?

我担心的是,我想在其上渲染一些SVG图形.

c# browser webbrowser-control .net-3.5 internet-explorer-9

83
推荐指数
7
解决办法
10万
查看次数

如何在WebBrowser控件中注入Javascript?

我试过这个:

string newScript = textBox1.Text;
HtmlElement head = browserCtrl.Document.GetElementsByTagName("head")[0];
HtmlElement scriptEl = browserCtrl.Document.CreateElement("script");
lblStatus.Text = scriptEl.GetType().ToString();
scriptEl.SetAttribute("type", "text/javascript");
head.AppendChild(scriptEl);
scriptEl.InnerHtml = "function sayHello() { alert('hello') }";
Run Code Online (Sandbox Code Playgroud)

scriptEl.InnerHtml和scriptEl.InnerText都给出了错误:

System.NotSupportedException: Property is not supported on this type of HtmlElement.
   at System.Windows.Forms.HtmlElement.set_InnerHtml(String value)
   at SForceApp.Form1.button1_Click(Object sender, EventArgs e) in d:\jsight\installs\SForceApp\SForceApp\Form1.cs:line 31
   at System.Windows.Forms.Control.OnClick(EventArgs e)
   at System.Windows.Forms.Button.OnClick(EventArgs e)
   at System.Windows.Forms.Button.OnMouseUp(MouseEventArgs mevent)
   at System.Windows.Forms.Control.WmMouseUp(Message& m, MouseButtons button, Int32 clicks)
   at System.Windows.Forms.Control.WndProc(Message& m)
   at System.Windows.Forms.ButtonBase.WndProc(Message& m)
   at System.Windows.Forms.Button.WndProc(Message& m)
   at System.Windows.Forms.Control.ControlNativeWindow.OnMessage(Message& m)
   at System.Windows.Forms.Control.ControlNativeWindow.WndProc(Message& m)
   at …
Run Code Online (Sandbox Code Playgroud)

.net javascript c# webbrowser-control winforms

81
推荐指数
9
解决办法
15万
查看次数

在Web浏览器控件中使用最新版本的Internet Explorer

C#Windows窗体 应用程序中的Web浏览器控件的默认版本是7.我已经通过文章浏览器仿真更改为9 ,但是如何在Web浏览器控件中使用已安装的Internet Explorer的最新版本?

c# webbrowser-control

79
推荐指数
5
解决办法
12万
查看次数

在WPF WebBrowser控件中显示字符串中的html

我的数据上下文对象包含一个字符串属性,它返回我需要在WebBrowser控件中显示的html; 我找不到WebBrowser的任何属性来绑定它.有任何想法吗?

谢谢!

wpf webbrowser-control

61
推荐指数
1
解决办法
5万
查看次数

如何解决.NET Webbrowser控件中的内存泄漏问题?

这是.NET Webbrowser控件中一个众所周知的旧问题.

简介:使用.NET webbrowser控件导航到页面会增加从未释放的内存使用量.

重现内存泄漏:将WebBrowser控件添加到窗体.用它来导航到你想要的任何页面.关于:空白工作,向下滚动谷歌图像,直到您的使用量为100MB +,然后在其他地方浏览,注意几乎没有任何内存被释放是一个更戏剧性的演示.

我当前对应用程序的要求包括长时间运行它,显示有限的IE7浏览器窗口.运行IE7本身也有一些混蛋设置的钩子,BHO和组策略也是不可取的,尽管这看起来像是目前的后备.将浏览器嵌入到Windows窗体应用程序中.使用不同的浏览器基础对我来说不是一个可用的选项.IE7是必需的.

与此已知内存泄漏相关的先前主题和文章:

通常提出的修复不起作用:

  • 去不同的页面并不重要.about:blank触发泄漏.它不需要页面具有javascript或任何其他额外技术.
  • 使用不同版本的Internet Explorer无关紧要.7,8和9都表现出相同的症状,据我所知,所有版本在控件中都有相同的内存泄漏.
  • Dispose()控件没有帮助.
  • 垃圾收集没有帮助.(事实上​​,我对此进行的研究表明泄漏是在Webbrowswer控件包装的非托管COM代码中.)
  • 最小化并将进程可用内存设置为-1,-1(SetProcessWorkingSetSize()或simimlar.)仅减少物理内存使用量,对虚拟内存没有影响.
  • 调用WebBrowser.Stop()不是一个解决方案,并且打破了使用静态网页之外的任何功能的功能,而不仅仅是略微减少泄漏.
  • 在导航到另一个文档之前强制等待文档完全加载也无济于事.
  • 在单独的appDomain中加载控件不能解决问题.(我自己没有这样做,但是研究显示其他人在这条路线上没有成功.)
  • 使用不同的包装器(如csexwb2)也无济于事,因为这也会遇到同样的问题.
  • 清除Internet临时文件缓存不会执行任何操作.问题出在活动内存中,而不是磁盘上.

关闭并重新启动整个应用程序时,将清除内存.

我愿意直接在COM或Windows API中编写自己的浏览器控件,如果这是对问题的肯定修复.当然,我更喜欢一个不太复杂的修复; 我宁愿避免降低级别来做事情,因为我不想在浏览器支持的功能方面重新发明轮子.让我们在自己动手的浏览器中复制IE7功能和非标准行为.

救命?

.net browser memory memory-leaks webbrowser-control

57
推荐指数
3
解决办法
2万
查看次数

WPF WebBrowser控件 - 如何抑制脚本错误?

我在这里发现了类似的问题:

使用WPF WebBrowser控件时如何禁止脚本错误?

但这些解决方案不适用于我.我需要阻止弹出窗口出现,因为我正在使用WebBrowser自动执行网站上的管理任务.

SuppressScriptErrors 似乎不是我的WebControl上的可用属性:(

.net c# wpf webbrowser-control

56
推荐指数
5
解决办法
5万
查看次数