0

WPFページでホストされているWebBrowserコントロールがあります。JavaScript関数がWPFプログラムでイベントを呼び出す方法があるかどうか疑問に思っています。

WebBrowserコントロールのWebページにボタンがあります。

<button style="height:100;width:100" id="initButton"  onclick="alert('hello');" />

WPFコードでは、次のようにボタンにイベントをフックしようとしました。

        mshtml.HTMLButtonElementEvents_Event iEvent;
        iEvent = (mshtml.HTMLButtonElementEvents_Event)ele;
        iEvent.onclick += new HTMLButtonElementEvents_onclickEventHandler(ClickEventHandler);
        ...

    private bool ClickEventHandler()
    {
        MessageBox.Show("WPF Event Handler");
        return true;
    } 

次に、次のようにJavaScript関数からonclickを呼び出します。

function SomeEvent(sender, e) {
    alert('JS event handler');
    document.getElementById("initButton").onclick();
 }

WPFコードは、ボタンを押すと呼び出されますが、SomeEventからonclickが呼び出されると呼び出されません。

これを行うためのより簡単な方法はありますか?JSからonclickイベントを呼び出して、添付されたWPF添付イベントが呼び出されるようにするためのより良い方法はありますか?

4

2 に答える 2

2

はい、できます。

WebBrowserコントロールには次のプロパティObjectForScriptingがあります。

http://msdn.microsoft.com/en-us/library/system.windows.controls.webbrowser.objectforscripting.aspx

javascriptは、そのオブジェクトのメソッドを呼び出すことができます。これにより、wpfページのメソッドを呼び出して、イベントなどを発生させることができます。

于 2012-07-20T20:20:12.487 に答える
1

ObjectForScriptingその答えです。便宜上、Winformsの例へのリンクを次に示します(私もWPFを使用していますが、WPFページに例はありません)。

https://msdn.microsoft.com/en-us/library/system.windows.forms.webbrowser.objectforscripting(v=vs.110).aspx

価値のあることとして、メインウィンドウをObjectForScriptingとして設定することはできませんでした。ObjectForScriptingとしてどのような種類のFrameworkElementオブジェクトも使用できないと思います。

于 2016-11-23T19:19:01.977 に答える