每当我尝试使用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?
最近有消息称,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)