[免责声明:我是Visual Basic的新手.]
在WPF中,我有一个包含2个TabItems的TabControl:
第一个TabItem包含一堆URL.
第二个TabItem包含一个DockPanel,其中包含一个cefSharp webView(嵌入了.net的chrome)
当我点击tab1中的url时,它会在tab2中包含的浏览器中加载一个页面... 但是,只有在我通过单击tab2初始化浏览器时它才有效.
在进行一些搜索之后,看起来vb.net不会初始化TabItem中的内容,直到它变得可见.(对?)
所以,我的问题是,如何在后台强制一个未选中的选项卡在加载时初始化其内容?(即.所以我不必先点击选项卡或先切换到它)
编辑:
根据要求,这是相关代码:
相关的XAML由一个名为"mainBox"的DockPanel组成
<DockPanel Name="mainBox" Width="Auto" Height="Auto" Background="#afe0ff" />
Run Code Online (Sandbox Code Playgroud)
这是我的"代码隐藏"vb脚本:
Class MainWindow : Implements ILifeSpanHandler, IRequestHandler
Shared web_view1 As CefSharp.Wpf.WebView
Shared web_view2 As CefSharp.Wpf.WebView
Public Sub init(ByVal sender As Object, ByVal e As EventArgs) Handles Me.Loaded
'This is in a DockPanel created on the xaml named mainBox
' set up tabControl:
Dim browserTabs As New TabControl()
browserTabs.BorderThickness = Nothing
Dim tab1 As New TabItem()
tab1.Header = "My Tab"
Dim tab2 …Run Code Online (Sandbox Code Playgroud) 我需要在Wpf应用程序中使用Web浏览器,我尝试使用工具箱中的一个,但是遇到了一些问题并转到了CefSharp.
public MainWindow()
{
InitializeComponent();
BrowserSettings settings = new BrowserSettings();
Cef.Initialize(new CefSettings());
CefSharp.Wpf.ChromiumWebBrowser webBrowser = new CefSharp.Wpf.ChromiumWebBrowser();
licence_grid.Children.Add(webBrowser);
webBrowser.Address = "http://myurlToLoad the page";
}
Run Code Online (Sandbox Code Playgroud)
问题是当我使用普通网址加载页面时.但是当我使用我想要使用的URL时,用户在浏览器中输入用户和密码(我的意思是不是从网站弹出).我收到这个页面的错误需要花费很多时间来加载,没有别的.有人可以给我一些跟踪的帖子......谢谢
我需要在CefSharp 3的本机浏览器中打开一个链接.我需要在CefSharp 3的chrome浏览器中运行整个应用程序,除了表单.当我单击表单的链接按钮(例如 - 注册按钮.它有一个指向注册表单的链接)我需要在本机浏览器中打开此链接(例如 - Internet Explorer).
我们能在CefSharp中实现这一目标吗?
我搜索了谷歌以及堆栈溢出.但无法找到解决方案.
提前致谢.
我正在使用最新版本的CefSharp,我需要显示Flash.使用Chrome时,页面会正确显示.但是,当使用CefSharp时它不会.
到目前为止我试过:
var browser = new ChromiumWebBrowser(URL)
{
BrowserSettings = new BrowserSettings() {
Java = CefState.Enabled,
Plugins = CefState.Enabled,
},
Dock = DockStyle.Fill
};
Run Code Online (Sandbox Code Playgroud)
当我加载时,about:plugins我得到:
CEF 3.2357.1287.g861c26e
铬43.0.2357.130
操作系统Windows
WebKit 537.36
JavaScript 4.3.61.30
闪
用户代理Mozilla/5.0(Windows NT 6.2; Win64; x64)AppleWebKit/537.36(KHTML,与Gecko一样)Chrome/43.0.2357.130 Safari/537.36
如何在CefSharp中启用Flash?
我正在使用CefSharp让webbrowser在winforms应用程序中运行angularjs代码.
我能够将c#对象发送到js端,然后如果它们只包含字符串,整数等,则使用它们.但是当我尝试发送一个包含值列表的对象时,CefSharp在js端尝试解析它时会崩溃.
c#代码的一个例子:
public class TestClass
{
public string name { get; set; }
public string other { get; set; }
public List<int> ints { get; set; }
}
Run Code Online (Sandbox Code Playgroud)
工作对象:
TestClass tc = new TestClass()
{
name = "Bobby Test",
other = "Hello"
};
Run Code Online (Sandbox Code Playgroud)
Obj造成崩溃:
TestClass tc = new TestClass()
{
name = "Bobby Test",
other = "Hello",
ints = new List<int>(){0,1}
};
Run Code Online (Sandbox Code Playgroud)
我如何传递给js代码:
browser.RegisterJsObject("testObj", tc);
Run Code Online (Sandbox Code Playgroud)
我的角度代码设置使用:
$scope.$watch(function ()
{ return window.testObj },
function () {
$scope.someField = window.testObj;
}); …Run Code Online (Sandbox Code Playgroud) 我有一个希望是简单的任务,但是它将需要精通CefSharp的人员来解决。
我有一个要从中检索HTML的URL。问题在于此特定的url实际上并未在GET上分发页面。相反,它将大量Javascript推送到浏览器,然后浏览器执行并生成实际的呈现页面。这意味着涉及HttpWebRequest并且HttpWebResponse不会起作用的常规方法。
我研究了许多不同的“无头”选项,由于多种原因,我认为最能满足我的需求的选项是CefSharp.Offscreen。但是我对这件事的运作方式一无所知。我看到有几个事件可以订阅,还有一些配置选项,但是我不需要嵌入式浏览器之类的东西。
我真正需要的是一种执行以下操作(伪代码)的方法:
string html = CefSharp.Get(url);
Run Code Online (Sandbox Code Playgroud)
订阅事件没有问题,如果那是等待Javascript执行并生成呈现页面所需的条件。
我正在CefSharp.WinForms用于开发应用程序.当出现任何SSL证书错误时,它将不显示网页.任何人都可以告诉我如何绕过SSL证书错误并显示网页.
我想拥有支持mp3和ffmpeg编解码器的cef lib.如何在其中使用这些编解码器功能重新编译cef库.
我想学习,我应该在cef库或cefsharp中编辑哪里?然后如何编译它来重用它..
我正在使用cefsharp版本47.
我正在构建一个用于浏览网页的Windows应用程序cefSharp.我需要在该应用程序中实现一些快捷键,任何人都可以告诉我如何实现此功能.
ctrl + tab = move to next tab
Run Code Online (Sandbox Code Playgroud)
我能够跟踪用户是否按下任何一个键,但无法跟踪多键按下.
public class KeyboardHandler : IKeyboardHandler
{
public bool OnKeyEvent(IWebBrowser browserControl, IBrowser browser, KeyType type, int windowsKeyCode, int nativeKeyCode, CefEventFlags modifiers, bool isSystemKey)
{
bool result = false;
Debug.WriteLine(String.Format("OnKeyEvent: KeyType: {0} 0x{1:X} Modifiers: {2}", type, windowsKeyCode, modifiers));
// TODO: Handle MessageNeeded cases here somehow.
return result;
}
public bool OnPreKeyEvent(IWebBrowser browserControl, IBrowser browser, KeyType type, int windowsKeyCode, int nativeKeyCode, CefEventFlags modifiers, bool isSystemKey, ref bool isKeyboardShortcut)
{ …Run Code Online (Sandbox Code Playgroud) 我正在开发一个使用cefsharp浏览器作为其一部分的银行设备上的应用程序.因为这个应用程序将被任何人使用,它不应该保存下一个用户可以看到的来自先前用户的任何数据.我想在关闭后清除所有缓存的浏览器数据.
public void InitBrowser()
{
settings = new CefSettings();
settings.CachePath = AppDomain.CurrentDomain.BaseDirectory + "cache";
settings.CefCommandLineArgs.Add("disable-application-cache", "1");
settings.CefCommandLineArgs.Add("disable-session-storage", "1");
if (!Cef.IsInitialized) Cef.Initialize(settings);
webBrowser = new CefSharp.Wpf.ChromiumWebBrowser();
MainGrid.Children.Add(webBrowser);
}
Run Code Online (Sandbox Code Playgroud)
我想在WebPages_Exit调用一个名为的函数后清除所有缓存的数据 .如何在不删除浏览器实例或关闭CEF的情况下删除所有缓存数据,导致CEF无法初始化两次,并且在处理后无法创建另一个浏览器实例.
我实现了visit函数ICookieVisitor以保存cookie以及使用类似deleteCookies或禁用缓存cefSetting命令的方法,但没有任何作用导致cookie列表为空并且从不调用visit函数IcookieVisitor.它似乎保存在另一个部分,只是在CEF关闭时重置.