从C#代码调用位于WPF WebBrowser Control中的Javascript函数时出错

时间:2017-04-26 12:07:11

标签: javascript c# wpf

基于this解决方案,我尝试调用位于我的WebBrowser控件中的JavaScript函数。 .xaml看起来像这样

<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:   &#39;&#39; mshtml.HTMLDocumentClass&#39;不包含的定义   &#39; MYFUNC&#39;&#39;

也不是本代码

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

错误

  

System.Runtime.InteropServices.COMException:&#39;未知名称。 (例外   来自HRESULT:0x80020006(DISP_E_UNKNOWNNAME))&#39;

做好工作。

我错过了什么?

1 个答案:

答案 0 :(得分: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");