Vb.net 在webbrowser文档中动态创建新的CSS类?

Vb.net 在webbrowser文档中动态创建新的CSS类?,vb.net,winforms,webbrowser-control,Vb.net,Winforms,Webbrowser Control,使用VB.NET2010(Winforms)和targeting.NET2.0框架 在表单加载时,我有一个webbrowser控件,可以导航到特定的URL。浏览器完全加载该URL后,我单击button1,我要执行以下操作-->在加载的网页DOM的“head”部分中动态创建一个名为“dashedBorder”的新CSS类。这是按钮1的点击事件代码 Dim Document As HtmlDocument = WebBrowser1.Document Dim Head As Html

使用VB.NET2010(Winforms)和targeting.NET2.0框架

在表单加载时,我有一个webbrowser控件,可以导航到特定的URL。浏览器完全加载该URL后,我单击button1,我要执行以下操作-->在加载的网页DOM的“head”部分中动态创建一个名为“dashedBorder”的新CSS类。这是按钮1的点击事件代码

    Dim Document As HtmlDocument = WebBrowser1.Document
    Dim Head As HtmlElement = Document.GetElementsByTagName("head")(0)

    Dim SelectedStyle As HtmlElement = Document.CreateElement("style")
    SelectedStyle.InnerText = ".dashedBorder {border: 2px dashed yellow !important;}"
    Head.AppendChild(SelectedStyle)
当我运行上述代码时,我收到一条VB错误消息,说明“此类型的HtmlElement不支持属性”

在这个场景中如何创建新的CSS类?仅供参考,此时我不想将CSS分配给任何特定元素——我只想创建类(在DOM中),以便稍后在代码中使用jQuery打开和关闭该类。

是一个很好的起点,但实际上,对于所有IE版本,在
WebBrowser
控件中工作更简单,比上面描述的要多:

  • 首先,您需要访问
    SelectedStyle
    style对象后面的本机DOM元素(
    NativeSelectedStyle=SelectedStyle.domeElement
  • 然后,
    NativeSelectedStyle.type
    需要设置为
    “text/css”
  • 此时,
    NativeSelectedStyle.styleSheet
    变为可用,否则它是
    Nothing
  • NativeSelectedStyle.styleSheet.cssText
    设置为样式表内容
完整示例:

Public Class Form1
    Private Sub WebBrowser1_DocumentCompleted(sender As Object, e As WebBrowserDocumentCompletedEventArgs) Handles WebBrowser1.DocumentCompleted
        Dim Document As HtmlDocument = WebBrowser1.Document
        Dim Head As HtmlElement = Document.GetElementsByTagName("head")(0)

        Dim SelectedStyle As HtmlElement = Document.CreateElement("style")

        Dim NativeSelectedStyle = SelectedStyle.DomElement
        NativeSelectedStyle.type = "text/css"
        ' NativeSelectedStyle.innerHTML = ".dashedBorder { ... }" throws an error
        NativeSelectedStyle.styleSheet.cssText = ".dashedBorder {border: 2px dashed yellow !important;}"

        Head.AppendChild(SelectedStyle)

        MessageBox.Show(SelectedStyle.OuterHtml)
    End Sub

    Private Sub Form1_Load(sender As Object, e As EventArgs) Handles MyBase.Load
        WebBrowser1.Navigate("about:blank")
    End Sub
End Class

[编辑]现在我发现我基本上是复制的,所以应该归功于@paracycle。让这一个成为wiki。

研究一下如何在javascript中创建样式元素。这将为你指明正确的方向。