标签: cefsharp

我已成功将CefSharp嵌入到.NET 4.0应用程序中.是否有可能让jQuery调用在DOM上运行?

我试图找出这是否可能.我已经通过GitHub示例https://github.com/chillitom/CefSharp给了我类的源代码(虽然我无法从这个GITHUB构建CefSharp本身.

然后,我尝试从这个链接https://github.com/downloads/ataranto/CefSharp/CefSharp-1.19.0.7z下载二进制文件,然后通过参考这些示例构建我的C#win32应用程序,这相当顺利地进行了8个小时左右我有一个工作的嵌入式浏览器,yipeee.但是,我现在处于想要操作DOM的位置 - 我已经读过你只能使用webView.EvaluateScript("some script"); 和webView.ExecuteScript("some script"); 因为cefsharp无法提供直接DOM访问

所以我想知道的是.我可以调用jQuery方法吗?如果我加载的页面已经加载了jQuery,我可以在c#中执行以下操作吗?

webView.ExecuteScript("$(\"input#some_id\").val(\"user@example.com\")"));
Run Code Online (Sandbox Code Playgroud)

目前这引发了一个例外.我想找出来; 我是否应该尝试使用cefsharp DLL中的jQuery,或者我是否必须坚持标准的旧学校JavaScript,这将花费我5倍的时间来编写...?

我希望堆叠器有答案.我已经为cefsharp尝试了wiki和论坛,但是它们并没有提供太多的线索; 我发现的唯一例子是旧式的JavaScript.

c# jquery cefsharp

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

cefsharp等待页面加载,winforms C#

首先,我是C#的新手并且学习Cefsharp + javascript,所以请尝试评论你认为必要的任何解决方案,这将拯救我提出愚蠢的问题.

我试图等到页面完成加载Cefsharp来执行我的代码,我已经尝试了在其他stackoverflow问题/ github上找到的几个解决方案,但没有去...

我认为解决方案是"NavStateChanged",但我得到一个C#错误:"ChromiumWebBrowser不包含'NavStateChanged'的定义"

任何人都可以指出我正确的方向或给我一个片段?我不是要求你为我写完整件事,但我真的迷失在这里,我一下子学习C#,Cefsharp和javascript,而且......压倒性的.

这是我在网上寻找解决方案时找到的代码,它也匹配了很多github引用,但似乎不起作用:/

EventHandler<NavStateChangedEventArgs> handler = null;
handler = (sender, args) = > {

    //TODO : show a loading gif until the page load completes

    //Wait for while page to finish loading not just the first frame
    if (!args.IsLoading)
    {
        chromeBrowser.NavStateChanged -= handler;

        MessageBox.Show("The page has completed loading", "Load completed", 
                        MessageBoxButtons.OK);
        //TODO : once load complete show the actual page
    }
Run Code Online (Sandbox Code Playgroud)

c# pageload chromium-embedded cefsharp

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

cefSharp ChromiumWebBrowser 大小与页面内容的关系

您知道如何使 ChromiumBrowser 打开时浏览器大小适合内容吗?现在这个 xaml 位于窗口主体中。当有人单击 MyTextBox 的文本时,ChromiumBrowser 将打开以显示更多信息。

编辑: 如果没有固定的宽度和高度,铬窗口不会显示。

....
<Canvas Panel.ZIndex="99" Visibility="{Binding IsChromiuimVisible, Converter={StaticResource BooleanToVisibilityConverter}, FallbackValue=Collapsed}">
<Popup Placement="Top" PlacementTarget="{Binding ElementName=MyTextBlock}"
    IsOpen="{Binding IsChromiumVisible}" PopupAnimation="Fade" AllowsTransparency="True"
    MouseEnter="OnMouseEnter" MouseLeave="OnMouseLeave">
    <Grid Background="Transparent">
        <cefSharp:ChromiumWebBrowser
                 Width="300" Height="620"
              Address="{Binding ChromiumAddress, Mode=TwoWay}">
        </cefSharp:ChromiumWebBrowser>
    </Grid>
</Popup>
</Canvas>
....
Run Code Online (Sandbox Code Playgroud)

c# wpf cefsharp

7
推荐指数
1
解决办法
5830
查看次数

在 CefSharp 中使用 Angular2

我正在寻找一种Angular2CefSharp控件中运行我的应用程序并建立双向通信的方法。我给你举两个例子:

  1. 我的 Angular 应用程序中有一个按钮,并希望我的 CefSharp 输出一个消息框(仅作为示例)。我知道如何进入 javascript 代码,但我无法编译我的 AngularApp,如果你从 C# 添加一个类,因为它不知道这一点。

C#代码:

private void RegisterJsObjects()
{           
    _browser.RegisterJsObject("cefTestClass", new TestClass());
}

class TestClass
{
    public void csF(string message) 
    {
        MessageBox.Show(message, "#C", System.Windows.Forms.MessageBoxButtons.OK, System.Windows.Forms.MessageBoxIcon.Information);
    }
}
Run Code Online (Sandbox Code Playgroud)

角度代码:

<button (click) ="cefTestClass.csF('text')"> C# Button </button>
Run Code Online (Sandbox Code Playgroud)
  1. 我想Angular从我的CefSharp应用程序中调用函数,因为它们在编译后得到不同的名称,我无法访问它们。

chromium chromium-embedded cefsharp angular

7
推荐指数
1
解决办法
3323
查看次数

如何正确使用Ce​​fSharp for WPF?

我用 VS2012 创建了一个新的 Wpf 项目。我右键单击该项目并选择“管理 NuGet 包”。然后我安装了 Wpf 的 CefSharp 包。

然后我使用了这个“指南”:https://github.com/cefsharp/CefSharp/blob/master/README.WPF.md

遗憾的是我遇到了 4 个错误,但我不知道如何消除它们!

这些是我得到的错误(我用“filepath”取出了项目的路径):

Error   5   The type 'cefSharp:WebView' was not found. Verify that you are not missing an assembly reference and that all referenced assemblies have been built.    "filepath"\Chromium\MainWindow.xaml 6   10  Chromium
Error   3   The name "WebView" does not exist in the namespace "clr-namespace:CefSharp.Wpf;assembly=CefSharp.Wpf".  "filepath"\Chromium\MainWindow.xaml 6   9   Chromium

Error   6   The name 'Cef' does not exist in the current context    "filepath"\Chromium\MainWindow.xaml.cs  28  13  Chromium
Error   4 …
Run Code Online (Sandbox Code Playgroud)

wpf xaml c#-4.0 visual-studio-2012 cefsharp

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

如何使用cefsharp将输入传递给javascript函数

我正在尝试将 CefSharp WebView 添加到我的 WPF 应用程序中,以代替我们使用的原始 WebBrowsers。WebBrowser 有一个 InvokeScript 函数(http://msdn.microsoft.com/en-us/library/cc452443(v=vs.110).aspx)它允许您调用 JavaScript 函数并可选择传入一个 obj 数组该 JS 函数的输入。

有什么方法可以对 CefSharp WebView 做类似的事情,我可以在其中将输入参数传递给 JavaScript 函数吗?例如,我可以这样做:

this.webBrowser.InvokeScript("scriptName", input0, input1, input2);
Run Code Online (Sandbox Code Playgroud)

使用 WebBrowser,是否有任何等效的功能或多个功能可以使用 CefSharp WebView 实现这一点?

c# wpf cefsharp

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

无法为 x64 和 x86 加载文件或程序集 'CefSharp.Wpf;只有一个作品

当我运行时,我得到:Could not load file or assembly 'CefSharp.Wpf, Version=41.0.0.0, Culture=neutral, PublicKeyToken=40c4b6fc221f4138' or one of its dependencies. An attempt was made to load a program with an incorrect format.
这意味着问题是由于 dll 的位数不正确。

在版本 41.0.0 中,nuget 包添加了指向正确路径(x86 文件夹)的 x86 版本的 dll 引用。还有另一个 dll 副本指向属性面板中的空路径。问题是 x64 版本因错误图像错误而崩溃,因为它引用了 x86 版本的 dll。

我已经回溯到 39.0.2 并且 CefSharp 对我有用。我有两组 dll,其中 x86 和 x64 版本的应用程序按预期编译和运行。

当我再次升级到 41.0.0 和以前一样的问题。尽管应用程序使用 x86 版本的 dll,但在尝试显示第一个浏览器时会崩溃,但 x64 版本将编译。我尝试重建所有并删除自动复制的 dll,并且在编译期间再次复制 x86 版本。(至少我相信是这种情况

两套dll

然后我删除了引用中的所有 dll 并手动添加了 x64 版本。编译和执行与 39.02 版本的 CefSharp.WPF 一样正常工作。

如何在无需手动更改 dll 路径的情况下让两个版本都能正常工作? …

c# wpf cefsharp

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

将 Cefsharp 中的文件下载到允许用户打开的目录

我正在构建一个原始和基本的 Web 浏览器,我的工作场所希望在其上托管一些内部应用程序。我cefSharp在用 C# 编写的 WinForms 应用程序中使用。我已经成功地构建了浏览器来导航应用程序,但我在下载处理程序方面遇到了问题。我想将文件直接下载到C:\Users\[username]\Downloads文件夹(我们所有的计算机是 Windows 计算机)而无需使用对话框。

Force CEFSharp to download without show dialog读取表明使用showDialog: false应该可以工作,但是当我应用它时,没有任何下载。同样,通过研究以下任何一项,我也没有取得任何进展:

作为奖励,可以选择打开文件(例如在 Google Chrome 中)会很好,但这并不是绝对必要的。

下面的代码运行顺利,并近似于我正在尝试的内容。此示例打开 GitHub Gist。单击右侧的“下载 Zip”按钮将打开对话框以下载并保存文件。

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Web.Script.Serialization;
using System.Windows.Forms;
using CefSharp;
using CefSharp.WinForms;
using System.IO;

namespace ShinyChrome
{
    public partial class ShinyApp : Form
    {
        public class …
Run Code Online (Sandbox Code Playgroud)

c# download cefsharp

6
推荐指数
1
解决办法
8489
查看次数

CefSharp 从现有的 Javascript 函数中获取结果

我正在尝试通过在 Windows 窗体应用程序中使用 CefSharp 从本地 html 页面上的现有 Javascript 函数获取结果。

html页面源码为:

<!DOCTYPE html>
<html>
<body>
<p id="demo">A Paragraph.</p>
<script>
function myFunction() {
    document.getElementById("demo").innerHTML = true;
    return 1 + 1;
}
</script>
</body>
</html>
Run Code Online (Sandbox Code Playgroud)

我的 C# 代码是:

private void ChromeBrowser_LoadingStateChanged(object sender, LoadingStateChangedEventArgs args)
{
    if (!args.IsLoading)
    {
        string result = RunScriptParamAsync("myFunction").ToString();
    }
}

public string RunScriptParamAsync(string scriptName)
{
    string script = "";
    script = scriptName;
    //script = string.Format("(function myFunction() {{ document.getElementById('demo').innerHTML = \"{0}\"; return 1 + 1; }})();", scriptName);
    chromeBrowser.EvaluateScriptAsync(script).ContinueWith(x =>
    { …
Run Code Online (Sandbox Code Playgroud)

javascript cefsharp

6
推荐指数
1
解决办法
3066
查看次数

如何包含 CEFSharp 所需的 VC++ 可再发行文件

使用 CEFSharp 浏览器构建应用程序,在我的机器上运行良好,但在服务器上崩溃并出现以下错误:

System.IO.FileLoadException:无法加载由“CefSharp.Core.dll”导入的过程。

我已经在互联网上看到了这个问题,最常见的解决方案似乎是安装 VC++ Redistributable。但是,我在我们的生产服务器上没有该访问权限。在开发服务器中,我尝试安装可再发行组件(x86、x64、2017 和 2013),但没有任何区别。计算机是 64 位的,但应用程序是 32 位的,所以我尝试了所有方法。

有人可以告诉我我需要将哪些文件添加到应用程序目录中才能使 CEFSharp 工作。本文档第 6 节:https : //github.com/cefsharp/CefSharp/wiki/Frequently-asked-questions#6-how-do-i-include-the-visual-studio-c-2012-redistributables-on- the-target-app列出了必要文件的目录,但我使用的是 Visual Studio 2017 并且我的机器上没有任何这些目录。

附加信息:

  • 开发机 Windows 10, server 2016 Standard

  • 构建设置为 x86,未对 Any CPU 模式进行任何配置更改

  • Windows 窗体应用程序

  • 来自 NuGet 的 CefSharp 71.0.0 版(单独通过包管理控制台简单 CefSharp 应用程序在运行时丢失文件

  • 不使用任何类型的包或 ClickOnce 部署,手动将所有文件从我的计算机上传到服务器

更新:

虽然我仍然无法让 CEFSharp 在我的项目中工作,但我接受了 Peter Liapin 的回答,因为它确实回答了我提出的问题。现在我知道 VC++ Redistributable 中的哪些文件要复制到服务器上的应用程序文件夹中,我只是在我的计算机或服务器上没有他提到的特定 dll。

此外,我使用 CEFSharp 创建了一个新的测试 Windows 窗体项目,它在没有 VC++ Redistributable dll 的服务器上运行。但是,我需要 CEFSharp 浏览器在现有应用程序引用的用户控件中工作。

software-distribution chromium-embedded cefsharp

6
推荐指数
1
解决办法
6273
查看次数