2013-02-19 40 views
4

我使用网络浏览器控件,文档加载了HTML页面。我想以编程方式从文档中删除一个元素。如何从Web浏览器控件中以编程方式删除HTML元素?

任何人都可以指导我如何通过ID或名称属性删除任何元素?

+0

删除或隐藏? – pleinolijf 2013-02-19 14:56:19

+0

只能删除。我知道隐藏很容易。 – Thomas 2013-02-19 15:00:02

+0

http://stackoverflow.com/questions/5006825/converting-webbrowser-document-to-a-bitmap – Thomas 2013-03-01 19:27:45

回答

3

您可以使用Microsoft.mshtml库来完成此操作。我使用dynamic数据类型的功能完成它:

private void Form1_Load(object sender, EventArgs e) 
{ 
    webBrowser1.Navigate("https://www.google.com/"); 
} 

private void webBrowser1_DocumentCompleted(object sender, WebBrowserDocumentCompletedEventArgs e) 
{ 
    if (e.Url.ToString() == "https://www.google.com/") 
    { 
     dynamic htmldoc = webBrowser1.Document.DomDocument as dynamic; 
     dynamic node = htmldoc.getElementById("lga") as dynamic; 
     node.parentNode.removeChild(node); 
    } 
} 
1

这是VB.Net版本。我试图删除MsHTML。但引用该库有它自己的问题。下面不是直接的答案,但可以解决方法来停止使用内置页框加载外部资源

For Each FrameElement As HtmlElement In WebBrowser1.Document.GetElementsByTagName("iframe") 
     Debug.Print(FrameElement.OuterHtml) 
     FrameElement.OuterHtml = Nothing 

    Next 
0

OuterHtml无法修改!

此代码删除从网页的CSS链接:

Sub RemoveStylesheet() 
 
     Dim styles As HTMLStyleSheetsCollection = WB.Document.DomDocument.styleSheets 
 
1: 
 
     If styles.length > 0 Then 
 
      For Each stl As Object In WB.Document.DomDocument.styleSheets 
 
       '  stl.removeImport(0) 
 
       If stl Is Nothing Then Continue For 
 
       Dim st As IHTMLElement = stl.owningElement 
 
       ' st.href = "" 
 
       ' MsgBox(st.tagName) 
 
       st.parentElement.removeChild(st) 
 
      Next 
 
      GoTo 1 
 
     End If 
 

 
     
 
    End Sub

6
webbrowser.Document.GetElementById("element").OuterHtml = ""; 
+0

是的,这有效,比Hanlet的解决方案更简单,而且具有无需使用'dynamic'的优点。 – JonP 2016-09-30 12:27:11

相关问题