在过去使用过标准的WinForms WebBrowser控件后,只要在托管的Web浏览器控件的当前加载页面内发生脚本错误,我就能收到OLECMDID_SHOWSCRIPTERROR通知.
现在我转而使用Chromium Embedded(通过CefSharp .NET包装器)并寻找类似的东西.
我可以考虑注入一些JavaScript代码,但是真的很想拥有一个不需要改变HTML的解决方案.
我的问题:
在当前加载的页面中发生JavaScript错误时,Chromium Embedded是否可能以某种方式通知我的应用程序?
(我也在CefSharp组中问这个问题,认为这可能是独立的,所以在Stack Overflow上也要这么做)
更新1:
我看到CefSharp似乎没有实现一个OnUncaughtException功能.但不确定这是关于JavaScript错误还是CEF错误.
var settings = new CefSharp.CefSettings
{
PackLoadingDisabled = true
};
Run Code Online (Sandbox Code Playgroud)
这通常适用于生产模式应用程序
我有一个问题,在特定的网站上,下拉框周围出现红色边框.如果我设置PackLoadingDisabled = false并确保cef.pak文件位于文件夹中(此cef.pak随CefSharp nuget包一起分发.我不包括除locates/en-US.pak之外的任何其他.pak文件),这样就解决了这个问题.
我的问题是,这个cef.pak文件的用途是什么?
我看过CEF3自述文件,它显示它是可选的,但是这个Pack服务的目的不是很清楚.在我将其包含在我的软件分发版中之前,我需要确切知道它的用途.
我可以安全地在我的发布版本中启用Pack Loading吗?
我正在尝试将CefSharp集成到我在Windows XP上的Visual Studio 2010中开发的C#项目中.运行Windows Server 2003的其他人也报告了类似的错误.
我通过NuGet添加CefSharp.WinForms,它似乎工作得很好.
我编译并运行应用程序但是当我尝试加载CefSharp时,我得到"由'CefSharp.Core.dll'导入的过程无法加载."
以下是我运行的代码:
var settings = new CefSharp.CefSettings {
PackLoadingDisabled = true
};
if (Cef.Initialize(settings)) {
throw new Exception("Failed to initialze CefSharp");
}
var browser = new CefSharp.WinForms.ChromiumWebBrowser("http://www.google.com/");
browser.SetBounds(0, 0, ClientSize.Width, ClientSize.Height);
Controls.Add(browser);
Run Code Online (Sandbox Code Playgroud)
在CefSharp常见问题解答它告诉我,为了在Windows XP上运行,我应该执行许多任务,即使XP没有得到官方支持,它在常见问题解答中说它可以工作.



我正在使用CefSharp嵌入一个webapp,一切正常。但是,登录应用程序时,CEF不会像在普通Chrome中打开应用程序时那样记住用户名和密码。
CefSharp中是否有一种方法可以让cef要求记住用户名/密码,以便在使用返回到应用程序时,他们可以更快地登录?
我试过使用一些命令行参数,例如
CefSettings cs = new CefSettings();
cs.CefCommandLineArgs.Add("enable-automatic-password-saving", "enable-automatic-password-saving");
cs.CefCommandLineArgs.Add("enable-password-save-in-page-navigation", "enable-password-save-in-page-navigation");
Cef.Initialize(cs);
Run Code Online (Sandbox Code Playgroud)
但是到目前为止,cef尚未提示我保存用户名/密码。
我正在尝试在WinForms应用程序中使用CefSharp浏览器控件以及LocalStorage机制.
问题是应用程序中的浏览器控件更改为LocalStorage不会影响其他浏览器窗口,并且它不会从其他Chrome浏览器窗口获得更改.
HTML在本机Chrome浏览器中工作,并更改localstorage并获取更改通知.
我错过了什么?
C#代码:
public Form1()
{
InitializeComponent();
CefSharp.Cef.Initialize();
_browser = new ChromiumWebBrowser(URL_TO_LOAD);
_browser.BrowserSettings = new CefSharp.BrowserSettings()
{
ApplicationCacheDisabled = false,
FileAccessFromFileUrlsAllowed = true,
JavascriptDisabled = false,
LocalStorageDisabled = false,
WebSecurityDisabled = true,
JavaScriptOpenWindowsDisabled = false,
JavascriptDomPasteDisabled = false
};
_browser.Load(URL_TO_LOAD);
splitContainer1.Panel1.Controls.Add(_browser);
}
Run Code Online (Sandbox Code Playgroud)
HTML:
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="utf-8"/>
<meta name="viewport" content="width=620"/>
<title>HTML5 Demo: Storage Events</title>
</head>
<body>
<div>
<p>
<label for="data">Your test data:</label> <input type="text"
name="data" value="" placeholder="change me" id="data" />
</p>
<p id="fromEvent">Waiting for data …Run Code Online (Sandbox Code Playgroud) 如何在触摸屏上禁用Chrome中这个烦人的上下文菜单.当我复制了一些文本时,这会在选择/长按任何输入时弹出.

我正在使用CEFSharp(Chromium Embedded Framework)开发应用程序,并将其部署在Windows 8计算机的触摸屏上.我正在使用屏幕键盘(http://mottie.github.io/Keyboard/)在输入字段中输入文本.
我试过了
$('input').bind('copy paste contextmenu', function (e) {
e.preventDefault();
e.stopPropagation();
});
Run Code Online (Sandbox Code Playgroud)
这会禁用粘贴,但菜单仍会显示.我怎么摆脱这个菜单?如何最好地解决这个问题:CSS,Javascript或通过chrome命令行参数(http://peter.sh/experiments/chromium-command-line-switches/)?
google-chrome copy-paste touchscreen chromium-embedded cefsharp
或者如何在新建ChromiumWebBrowser实例时将自定义标头注入到站点的初始请求中.
我是Chromium的菜鸟,可以真正使用一些帮助.我有一个带CEF窗口的winforms应用程序.K,到目前为止没有问题.我需要做的是使用包含身份验证信息的自定义http-header调用/加载初始URL.这可能吗?
以下基本上是正在发挥作用的所有部分工作,除了自定义标题(Doh!)
Winform(CEF httpRequest(带有自定义标头))[永远不会超过这一点] => C#MVC web app => Owin_Authentication_Pipeline segment => MVC响应,带有填充的Razor视图=>显示在Winform Chromium应用程序中.
也许这也会有所帮助:
using CefSharp;
using CefSharp.WinForms;
...
private void Form1_Load(object sender, EventArgs e)
{
Cef.Initialize();
ChromiumWebBrowser myBrowser = new ChromiumWebBrowser("whatever.com");
// ??How do i get a custom header be sent with the above line??
myBrowser.Dock = DockStyle.Fill;
//myBrowser.ShowDevTools();
//myBrowser.RequestHandler = new DSRequestHander();
//myBrowser.FrameLoadStart += myBrowser_FrameLoadStart;
this.Controls.Add(myBrowser);
}
Run Code Online (Sandbox Code Playgroud)
我把它弄死了,看了看,尝试了我工具箱中的所有技巧,然后是一些.
我非常感谢任何想法,帮助或暗示我如何能够解决或绕过这个boggler.提前致谢.
我有一个简单的WPF应用程序,它可以在调试中正常工作,但是当我尝试加载CEFSharp Web浏览器时,它会发出clickonce版本崩溃
我有一个登录页面,用户然后点击打开浏览器一旦点击我得到以下错误
PresentationFramework.dll中发生未处理的"System.Windows.Markup.XamlParseException"类型异常
附加信息:在类型"MyProject.Views.CefSharpWebBrowserUserControl"上调用与指定绑定约束匹配的构造函数引发异常.
> <TabItem Header="Web Page" Name="CefWebPage">
> <Grid Background="#FFE5E5E5" Margin="0">
> <Grid.ColumnDefinitions>
> <ColumnDefinition Width="871*"/>
> </Grid.ColumnDefinitions>
> <views:CefSharpWebBrowserUserControl x:Name="CefSharpWebBrowserUserControl"></views:CefSharpWebBrowserUserControl>
> </Grid>
> </TabItem>
Run Code Online (Sandbox Code Playgroud)
例外:无法创建"CefSharpWebBrowserUserControl"的实例.
TargetInvocationException:调用目标抛出异常.
FileNotFoundException:无法加载文件或程序集'CefSharp.Core,Version = 45.0.0.0,Culture = neutral,PublicKeyToken = 40c4b6fc221f4138'或其依赖项之一.该系统找不到指定的文件.
代码背后
public partial class CefSharpWebBrowserUserControl : UserControl
{
public CefSharpWebBrowserUserControl()
{
InitializeComponent();
var settings = new CefSettings();
settings.PackLoadingDisabled = true;
WebBrowser = new ChromiumWebBrowser();
WebBrowser.Address = "www.google.com";
BrowserGrid.Children.Add(WebBrowser);
}
public ChromiumWebBrowser WebBrowser { get; set; }
}
}
Run Code Online (Sandbox Code Playgroud) 这可能是一个简单的问题,但是我有一个Winforms应用程序正在加载ChromiumWebBrowser控件(CefSharp),由于这些控件都吞噬了所有的预览事件,因此我无法弄清楚如何捕获它们。
将处理程序附加到浏览器控件的PreviewKeyDown事件的标准不起作用。有已知的解决方法吗?
我正在考虑将项目转换为WinForm应用程序中的嵌入式WebView类型架构,并考虑使用DotNetBrowser和CefSharp.
经过多次搜索后,我似乎无法找到免费CefSharp项目与付费DotNetBrowser组件的功能之间的任何比较.与DotNetBrowser的支持选项的主要区别是还有其他记录的差异吗?