Error when calling Javascript function located in WPF WebBrowser Control from C# code

5

Based on this solution i tried to call a JavaScript function located in my WebBrowser - control. The .xaml looks like this

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

But neither this code

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();
}

Error

Microsoft.CSharp.RuntimeBinder.RuntimeBinderException: ''mshtml.HTMLDocumentClass' does not contain a definition for 'myfunc''

nor this Code

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

Error

System.Runtime.InteropServices.COMException: 'Unknown name. (Exception from HRESULT: 0x80020006 (DISP_E_UNKNOWNNAME))'

do work.

What am I missing?

javascript
c#
wpf
asked on Stack Overflow Apr 26, 2017 by Torben • edited Aug 14, 2018 by halfer

1 Answer

3

Try this:

browser.NavigateToString("<html><script>function callMe() {alert('Hello');} document.myfunc = callMe;</script><body>Hello World</body></html>");
browser.LoadCompleted += (s,e) => browser.InvokeScript("callMe");
answered on Stack Overflow Apr 26, 2017 by mm8

User contributions licensed under CC BY-SA 3.0