Ilekroć próbuję wykonać JavaScript przez C# przy użyciu CefSharp (Stable 57.0), pojawia się błąd. Po prostu próbuję uruchomić funkcję ostrzegania, aby upewnić się, że działa, a następnie przetestować ją za pomocą mojej własnej funkcji. Jednak wydaje mi się, że dostaję błędy, próbując to zrobić.Wykonywanie JavaScript na C# z CefSharp WPF powoduje błąd
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');");
}
}
Próbowałem obu sposobów wykonywania skryptu.
Pierwszy:
webBrowser.GetMainFrame().ExecuteJavaScriptAsync("alert('test')");
daje mi ten błąd:
Drugi:
webBrowser.ExecuteScriptAsync("alert('test');");
daje mi ten błąd:
Moim celem jest stworzenie funkcji C#, która może wykonywać funkcję JavaScript w mojej przeglądarce CefSharp.
Próbowałem wielu linków/referencji i nie było ich zbyt wiele na przepełnieniu stosu. Czytałem również The FAQ for CefSharp i nie mogłem znaleźć żadnych prostych przykładów, które pozwalają mi wykonywać JavaScript w woli za pośrednictwem C#.
Ponadto zweryfikowałem zdarzenia, w których ramka jest załadowana (kończy się ładowanie), i jest ona rozładowywana (nie rozładowuje się), a jeśli przeglądarka internetowa ma wartość NULL (której nie ma), a wiadomość od :
webBrowser.GetMainFrame().ExecuteJavaScriptAsync("alert('test')");
nadal powoduje wystąpienie pierwszego błędu.
Testowałem pod GetMainFrame(). Zawsze zwraca wartość null. ZAWSZE. Nie ma znaczenia, jak długo czekam lub jakie warunki czekam.
WAŻNE
zapomniałem dodać jedną ważną informację, mam 2 zestawy w moim projekcie. Obaj kompilacji do oddzielnych plików wykonywalnych:
Helper.exe main.exe
main.exe ma okno „CallUI”, że gdy przycisk zostanie kliknięty, wykonuje sposób stworzyłem „ExecuteJavaScript() ", który znajduje się w moim oknie" BrowserWindow ". Okno CallUI zostało zadeklarowane i zainicjowane w Helper.exe.
Więc w zasadzie próbuję użyć osobnego programu, aby otworzyć okno, kliknij przycisk, który wywołuje metodę i wykonać javascript. Myślę więc, że ponieważ są to różne procesy, oznacza to, że przeglądarka ma zerową wartość. Jednak gdy robię to wszystko w Main.exe, to działa dobrze. Czy istnieje obejście, które pozwala mi użyć oddzielnego procesu do utworzenia okna z pliku Helper.exe i wykonania kodu Javascript z pliku Main.exe?
Czy możesz utworzyć minimalny odtwarzalny przykład (kod źródłowy) na temat interakcji Main.exe i Helper.exe? Bez tego nie jest łatwo dostarczyć rozwiązanie i upewnić się, że działa. –
Hej, mój problem został rozwiązany, okazało się, że muszę wdrożyć sposób, aby procesy mogły ze sobą rozmawiać (patrz moja długa odpowiedź poniżej). Miałem również dodatkowe pytanie dotyczące mojego rozwiązania (w sekcji komentarzy mojej odpowiedzi). – Rafael