ばかげた質問で申し訳ありませんが、私の VB/C# コードから Web ブラウザーの Web ページに JOSN 文字列を渡したいだけで、Web ページの JavaScript は何らかのインターフェイスを介して VB/C# メソッドを呼び出すことができますか? Android JavaScript インターフェイスと同じように、どうもありがとう
2 に答える
私があなたのことを正しく理解していれば、
webBrowser2.ObjectForScripting = new ScriptClass();
webBrowser2.DocumentText = "<html><script>window.external.Test('hello')</script></html>";
[System.Runtime.InteropServices.ComVisibleAttribute(true)]
public class ScriptClass
{
public void Test(string msg)
{
MessageBox.Show(msg);
}
}
WebBrowser コントロールを使用していて、表示されるページ内で JavaScript メソッドを呼び出す必要があるということですか? ええ、あなたはこれを行うことができます。WebBrowser 自体にはありませんが、 WebBrowser のプロパティHtmlDocument
によって公開されるオブジェクトにはメソッド グループがあり、ページの DOM 内で任意の ECMAScript 準拠のメソッドをプログラムで呼び出すことができ、オプションで一連のパラメーターをオブジェクトとして渡すことができます。配列。Document
InvokeScript()
次に、これを使用して、JavaScript から JSON Web サービスへの呼び出しをトリガーできます (メインの CLR プログラムで公開し、 を介して情報を渡すことでページに通知しますInvokeScript()
)。これは基本的な JSON/AJAX クライアント/サーバー スクリプトであり、すべてが自分自身と対話する 1 つのプログラムにまとめられています。これは物事を成し遂げるための最も効率的な方法ではありませんが、仕事を成し遂げるためのこれらのレイヤーがすでにあり、自己完結型のアプリをリリースしたいだけであれば、うまくいきます。