CefSharp(Stable 57.0)を使用してC#でJavaScriptを実行しようとすると、エラーが発生します。私は単にアラート機能を実行しようとしているので、機能していることを確認して後で自分の機能でテストすることができます。しかし、私はそうしようとして間違っているようです。CefSharpでJavaScriptを実行するWPFによってエラーが発生する
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');");
}
}
私は両方の方法でスクリプトを実行しようとしました。
最初の1に:
webBrowser.GetMainFrame().ExecuteJavaScriptAsync("alert('test')");
は私に、このエラーを与える:
秒:
webBrowser.ExecuteScriptAsync("alert('test');");
は私に、このエラーを与える:
私の目的は、CefSharpブラウザでJavaScript関数を実行できるC#関数を作成することです。
私は多くのリンク/参照を試しましたが、スタックオーバーフローでその多くはありませんでした。私もThe FAQ for CefSharpを読んで、JavaScriptをC#で自由に実行できるような簡単な例は見つかりませんでした。
さらに、フレームがロードされ(ロードが完了した)、アンロードされた(アンロードされていない)イベント、およびWebブラウザがnullの場合:
webBrowser.GetMainFrame().ExecuteJavaScriptAsync("alert('test')");
でも、最初のエラーが発生します。
私はGetMainFrame()をテストしました。常にnullを返します。常に。どれくらい待っているか、私が確認する条件は関係ありません。
重要
私は情報の一つの重要な部分を追加するのを忘れ、私は私のプロジェクトで2つのアセンブリを持っています。それらの両方が別々の実行ファイルにコンパイル:
Helper.exe MAIN.EXEに
MAIN.EXEは、ウィンドウ、ボタンがクリックされますと、それは私が「ExecuteJavaScriptを作成したメソッドを実行し、「CallUIを」()があります"、これは私のウィンドウ" BrowserWindow "の中にあります。 CallUIウィンドウはHelper.exeで宣言され、初期化されます。
私は基本的に別のプログラムを使用してウィンドウを開き、メソッドを呼び出してJavaScriptを実行するボタンをクリックしようとしています。だから私は彼らが異なるプロセスであると思う、それはブラウザがnullだと私に伝えます。しかし、私がMain.exeでそれをすべて実行すると、うまく動作します。別のプロセスを使用してHelper.exeからウィンドウを作成し、Main.exeからJavascriptを実行するための回避策がありますか?
このMain.exeとHelper.exeのやり取りについて、再現性のある例(ソースコード)を作成してください。それがなければ、ソリューションを提供し、それが確実に機能することを確認するのは簡単ではありません。 –
ちょっと、問題が解決したので、プロセスが互いに話す方法を実装しなければなりませんでした(私の長い答えは以下を参照してください)。私は私の答えについての余分な質問もしていました(私の答えのコメントの部分にあります)。 – Rafael