簡體   English   中英

使用WPF處理來自WebBrowser控件中托管的JavaScript的事件

[英]Using WPF to handle events from JavaScript hosted in WebBrowser control

我在WPF頁面上托管了一個WebBrowser控件。 我想知道JavaScript函數是否有任何方法可以在WPF程序中調用事件。

我在WebBrowser控件的網頁上有一個按鈕:

<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時調用WPF代碼。

有更簡單的方法嗎? 是否有更好的方法從JS調用onclick事件,以便調用附加的WPF附加事件?

是的你可以。

WebBrowser控件具有ObjectForScripting屬性:

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

javascript可以調用該對象上的方法,該方法可以調用wpf頁面上的方法來觸發事件等。

ObjectForScripting 就是答案。 為方便起見,這里是Winforms示例的鏈接(我也使用WPF,但WPF頁面上沒有示例):

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

對於它的價值,我將主窗口設置為ObjectForScripting並不起作用。 我不認為您可以使用任何類型的FrameworkElement對象作為您的ObjectForScripting。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM