使用VB.NET 2010(Winforms)并以.NET 2.0框架为目标。
在表单加载时,我有一个webbrowser控件,可以导航到特定的URL。一旦浏览器完全加载了该URL,我单击button1,我想要执行以下操作 - >在加载的网页DOM的“head”部分动态创建一个名为“dashedBorder”的新CSS类。这是button1的点击事件代码......
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打开和关闭该类。< / p>
答案 0 :(得分:1)
This question是一个很好的起点,但实际上让它在所有IE版本的WebBrowser
控件中工作更简单,而不是在那里描述:
SelectedStyle
样式对象(NativeSelectedStyle = SelectedStyle.DomElement
)后面的原生DOM元素; 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
[已编辑] 现在我发现我基本上复制了this answer,所以应该归功于@paracycle。使这个成为维基。