如何在WebBrowser控件中注入Javascript

Mon*_*RPG 3 c# wpf inject webbrowser-control

这里有关于Windows窗体的很棒的教程

如何在WebBrowser控件中注入Javascript?

我尝试过它,效果很好

但问题是在wpf应用程序中无法识别所使用的对象.所以我要问的是wpf应用程序中下面函数的等价物.谢谢.

HtmlElement head = webBrowser1.Document.GetElementsByTagName("head")[0];
HtmlElement scriptEl = webBrowser1.Document.CreateElement("script");
IHTMLScriptElement element = (IHTMLScriptElement)scriptEl.DomElement;
string srJquery = File.ReadAllText("jquery.txt");
element.text = srJquery;
head.AppendChild(scriptEl);  
Run Code Online (Sandbox Code Playgroud)

上面的函数在Windows窗体应用程序c#4.0中完美地工作,但在WPF应用程序中无法识别使用的对象,如HtmlElement.

WPF*_*-it 5

这有用吗?

    private void WebBrowser_LoadCompleted
       (object sender,
        System.Windows.Navigation.NavigationEventArgs e)
    {
        var webBrowser = sender as WebBrowser;

        var document
           = webBrowser.Document as mshtml.HTMLDocument;
        var ahref
           = document.getElementsByTagName("A").Cast<mshtml.IHTMLElement>().First();
        ahref.setAttribute(
           "onmouseenter",
           "javascript:alert('Hi');", 1);
    }
Run Code Online (Sandbox Code Playgroud)

你需要的是Microsoft.mshtml(.net API而不是MS office one)参考.

另请参阅此代码的WPF webbrowser控件,其中使用的ObjectForScripting属性WebBrowser可以帮助您注入javascript ...

http://blogs.msdn.com/b/wpf/archive/2011/05/27/how-does-wpf-webbrowser-control-handle-window-external-notify.aspx

如果这有帮助,请告诉我.