[英]How to handle Javascript events via WebBrowser control for WinForms
[英]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頁面上沒有示例):
對於它的價值,我將主窗口設置為ObjectForScripting並不起作用。 我不認為您可以使用任何類型的FrameworkElement對象作為您的ObjectForScripting。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.