2017-04-26 187 views
5

基於this解決方案我嘗試調用位於我的WebBrowser控件中的JavaScript函數。該.xaml看起來像這樣調用位於WPF WebBrowser控件中的Javascript函數時發生錯誤C#代碼中的WebBrowser控件

<Grid> 
    <WebBrowser x:Name="browser"/> 
</Grid> 

但無論這個代碼

public MainWindow() 
{ 
    InitializeComponent(); 
    browser.NavigateToString("<html><script>function callMe() {alert('Hello');} document.myfunc = callMe;</script><body>Hello World</body></html>"); 
    dynamic doc = browser.Document; 
    doc.myfunc(); 
} 

錯誤

Microsoft.CSharp.RuntimeBinder.RuntimeBinderException: 'mshtml.HTMLDocumentClass'不包含一個定義爲 'myfunc''

也不今典

public MainWindow() 
{ 
    InitializeComponent(); 
    browser.NavigateToString("<html><script>function callMe() {alert('Hallo');}</script><body>Hello World</body></html>"); 
    browser.InvokeScript("callMe"); 
} 

錯誤

System.Runtime.InteropServices.COMException:「未知的名稱。 (異常 從HRESULT:0x80020006(DISP_E_UNKNOWNNAME))'

做的工作。

我錯過了什麼?

感謝您的幫助。

回答

1

試試這個:

browser.NavigateToString("<html><script>function callMe() {alert('Hello');} document.myfunc = callMe;</script><body>Hello World</body></html>"); 
browser.LoadCompleted += (s,e) => browser.InvokeScript("callMe"); 
+1

謝謝,成功了! – Torben