c# – 如何在WebBrowser控件中注入Javascript

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

How to inject Javascript in WebBrowser control?

我尝试过它,效果很好

但问题是在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);

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

解决方法

这有用吗?

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

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

另请参阅此代码,以获取使用Webbrowser的ObjectForScripting属性的WPF webbrowser控件,它可以帮助您注入javascript …

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

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

相关文章

目录简介使用JS互操作使用ClipLazor库创建项目使用方法简单测...
目录简介快速入门安装 NuGet 包实体类User数据库类DbFactory...
本文实现一个简单的配置类,原理比较简单,适用于一些小型项...
C#中Description特性主要用于枚举和属性,方法比较简单,记录...
[TOC] # 原理简介 本文参考[C#/WPF/WinForm/程序实现软件开机...
目录简介获取 HTML 文档解析 HTML 文档测试补充:使用 CSS 选...