小编Raf*_*ael的帖子

使用CefSharp WPF在C#上执行JavaScript会导致错误

每当我尝试使用CefSharp(Stable 57.0)通过C#执行JavaScript时,我都会收到错误消息.我只是尝试执行警报功能,所以我可以确保它可以工作,然后用我自己的函数测试它.但是,我似乎在尝试这样做时遇到错误.

public partial class WebBrowserWindow : Window
{
    public WebBrowserWindow()
    {
        InitializeComponent();
        webBrowser.MenuHandler = new ContextMenuHandler();
        webBrowser.RequestHandler = new RequestHandler();
    }

    //Trying to execute this with either method gives me an error.
    public void ExecuteJavaScript()
    {
        //webBrowser.GetMainFrame().ExecuteJavaScriptAsync("alert('test')");

        //webBrowser.ExecuteScriptAsync("alert('test');");
    }
}
Run Code Online (Sandbox Code Playgroud)

我尝试了两种执行脚本的方法.

第一个:

webBrowser.GetMainFrame().ExecuteJavaScriptAsync("alert('test')");
Run Code Online (Sandbox Code Playgroud)

给我这个错误:

在此输入图像描述

第二:

webBrowser.ExecuteScriptAsync("alert('test');");
Run Code Online (Sandbox Code Playgroud)

给我这个错误:

在此输入图像描述

我的目标是创建一个可以在我的CefSharp浏览器中执行JavaScript函数的C#函数.

我尝试了很多链接/引用,堆栈溢出并没有那么多.我还阅读了CefSharp的FAQ,找不到任何允许我通过C#随意执行JavaScript的简单示例.

另外,我已经验证了加载Frame的事件(它完成加载)和卸载(它没有卸载),如果webbrowser为null(它不是),以及来自:的消息:

webBrowser.GetMainFrame().ExecuteJavaScriptAsync("alert('test')");
Run Code Online (Sandbox Code Playgroud)

仍会导致第一个错误发生.

我测试了GetMainFrame().它总是返回null.总是.无论我等待多久,或者我检查的条件.

重要

我忘记添加一条关键信息,我的项目中有2个程序集.它们都编译成单独的可执行文件:

Helper.exe Main.exe

main.exe有一个窗口"CallUI",当单击一个按钮时,它会执行我创建的"ExecuteJavaScript()"方法,它位于我的窗口"BrowserWindow"中.CallUI窗口在Helper.exe中声明并初始化.

所以基本上我试图使用单独的程序打开一个窗口,单击一个调用该方法并执行javascript的按钮.所以我认为因为它们是不同的进程,它告诉我浏览器是null.但是,当我在Main.exe中完成所有操作时,它可以正常工作.是否有一种解决方法允许我使用单独的进程从Helper.exe创建窗口并从Main.exe执行Javascript?

javascript c# wpf cefsharp

11
推荐指数
1
解决办法
3104
查看次数

Microsoft Teams 是否可以更新用户的状态/状态?

最近有消息称,Skype For Business 最终将被微软 Teams 下架并取而代之。

我有几个依赖 Skype For Business 的项目,我使用以下代码使用 2013 lync SDK 更新用户在 Skype For Business 上的状态。

public static void PublishPresence(ContactAvailability contactAvailability)
{
    var publishData = new Dictionary<PublishableContactInformationType, object>
    {
        {PublishableContactInformationType.Availability, contactAvailability}
    };

        SendPublishRequest(publishData);
}

private static void SendPublishRequest(Dictionary<PublishableContactInformationType, object> publishData)
{
    try
    {
        PublishContactInformation(publishData);
    }
    catch (Exception exception)
    {
        _logger.Error("Cannot publish presence to Lync. Error: " + exception);
    }
}

public static void PublishContactInformation(Dictionary<PublishableContactInformationType, object> publishData)
{
    LyncClient lyncClient = LyncClient.GetClient();

    lyncClient.Self.BeginPublishContactInformation(publishData, ar => lyncClient.Self.EndPublishContactInformation(ar), null);
} …
Run Code Online (Sandbox Code Playgroud)

c# microsoft-teams

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

标签 统计

c# ×2

cefsharp ×1

javascript ×1

microsoft-teams ×1

wpf ×1