标签: cefsharp

如何强制TabItem在加载时初始化内容?

[免责声明:我是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)

vb.net wpf tabcontrol cefsharp

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

CefSharp使用浏览器登录加载页面

我需要在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时,用户在浏览器中输入用户和密码(我的意思是不是从网站弹出).我收到这个页面的错误需要花费很多时间来加载,没有别的.有人可以给我一些跟踪的帖子......谢谢

browser wpf load cefsharp

5
推荐指数
2
解决办法
6357
查看次数

如何从CefSharp 3打开本机浏览器中的链接

我需要在CefSharp 3的本机浏览器中打开一个链接.我需要在CefSharp 3的chrome浏览器中运行整个应用程序,除了表单.当我单击表单的链接按钮(例如 - 注册按钮.它有一个指向注册表单的链接)我需要在本机浏览器中打开此链接(例如 - Internet Explorer).

我们能在CefSharp中实现这一目标吗?

我搜索了谷歌以及堆栈溢出.但无法找到解决方案.

提前致谢.

.net c# wpf cefsharp

5
推荐指数
2
解决办法
7484
查看次数

如何用CefSharp启用Adobe Flash?

我正在使用最新版本的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?

c# flash winforms cefsharp

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

当javascript尝试解析包含从C#发送的列表的对象时,CefSharp崩溃

我正在使用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)

javascript c# angularjs cefsharp

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

使用CefSharp.Offscreen检索需要Java渲染的网页

我有一个希望是简单的任务,但是它将需要精通CefSharp的人员来解决。

我有一个要从中检索HTML的URL。问题在于此特定的url实际上并未在GET上分发页面。相反,它将大量Javascript推送到浏览器,然后浏览器执行并生成实际的呈现页面。这意味着涉及HttpWebRequest并且HttpWebResponse不会起作用的常规方法。

我研究了许多不同的“无头”选项,由于多种原因,我认为最能满足我的需求的选项是CefSharp.Offscreen。但是我对这件事的运作方式一无所知。我看到有几个事件可以订阅,还有一些配置选项,但是我不需要嵌入式浏览器之类的东西。

我真正需要的是一种执行以下操作(伪代码)的方法:

string html = CefSharp.Get(url);
Run Code Online (Sandbox Code Playgroud)

订阅事件没有问题,如果那是等待Javascript执行并生成呈现页面所需的条件。

javascript c# headless-browser cefsharp cefsharp.offscreen

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

如何绕过SSL错误CefSharp WinForms

我正在CefSharp.WinForms用于开发应用程序.当出现任何SSL证书错误时,它将不显示网页.任何人都可以告诉我如何绕过SSL证书错误并显示网页.

ssl-certificate c#-4.0 cefsharp

5
推荐指数
2
解决办法
5790
查看次数

如何设置mp3和ffmpeg编解码器库对cef的支持?

我想拥有支持mp3和ffmpeg编解码器的cef lib.如何在其中使用这些编解码器功能重新编译cef库.

我想学习,我应该在cef库或cefsharp中编辑哪里?然后如何编译它来重用它..

我正在使用cefsharp版本47.

c# ffmpeg codec chromium-embedded cefsharp

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

如何为快捷键实现键盘处理程序cefSharp

我正在构建一个用于浏览网页的Windows应用程序cefSharp.我需要在该应用程序中实现一些快捷键,任何人都可以告诉我如何实现此功能.

防爆.

ctrl + tab = move to next tab
Run Code Online (Sandbox Code Playgroud)

我能够跟踪用户是否按下任何一个键,但无法跟踪多键按下.

IKeyboardHandler

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)

keyboard-shortcuts c#-4.0 cefsharp

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

Cefsharp在wpf中清除缓存,cookie和浏览器数据

我正在开发一个使用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关闭时重置.

cookies wpf browser-cache cefsharp

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