Всякий раз, когда я пытаюсь выполнить JavaScript через С# с помощью CefSharp (Stable 57.0), я получаю сообщение об ошибке. Я просто пытаюсь выполнить функцию предупреждения, поэтому я могу убедиться, что это работает, а затем проверить его с помощью моей собственной функции. Тем не менее, я, кажется, получаю ошибки, пытаясь это сделать.
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');");
}
}
Я пробовал оба способа выполнения script.
Первый:
webBrowser.GetMainFrame().ExecuteJavaScriptAsync("alert('test')");
Дает мне эту ошибку:
Второе:
webBrowser.ExecuteScriptAsync("alert('test');");
Дает мне эту ошибку:
Моя цель - создать функцию С#, которая может выполнять функцию JavaScript в моем браузере CefSharp.
Я пробовал много ссылок/ссылок и не было много. Я также читал FAQ для CefSharp и не мог найти простых примеров, которые позволяют мне выполнять JavaScript по своему усмотрению через С#.
Кроме того, я проверил события, в которых загружен кадр (он заканчивает загрузку), и выгружается (он не выгружается), и если webbrowser имеет значение null (а это не так) и сообщение из:
webBrowser.GetMainFrame().ExecuteJavaScriptAsync("alert('test')");
все еще вызывает первую ошибку.
Я тестировал GetMainFrame(). Он всегда возвращает null. ВСЕГДА. Неважно, сколько времени я жду или какие условия я проверяю.
ВАЖНО
Я забыл добавить одну важную часть информации, у меня есть 2 сборки в моем проекте. Оба они скомпилируются в отдельные исполняемые файлы:
Helper.exe Main.exe
main.exe имеет окно "CallUI", которое при нажатии кнопки запускает метод, который я создал "ExecuteJavaScript()", который находится внутри моего окна "BrowserWindow". Окно CallUI объявляется и инициализируется в Helper.exe.
Поэтому в основном я пытаюсь использовать отдельную программу для открытия окна, нажмите кнопку, вызывающую метод и выполняющий javascript. Поэтому я думаю, потому что они разные процессы, это говорит мне, что браузер имеет значение null. Однако, когда я делаю все это в Main.exe, он работает нормально. Есть ли способ обхода, который позволяет мне использовать отдельный процесс для создания окна из Helper.exe и выполнить Javascript из Main.exe?