• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:WebBrowserで特定の要素を削除)

WebBrowserで特定の要素を削除

このQ&Aのポイント
  • Form内のWebBrowserで<img>や<script>などの特定の要素を削除する方法を知りたいです
  • VB2008や2005系の開発環境で試してみたがエラーが発生しました
  • Yahoo!知恵袋でも同様の質問があり、解決されていないようです

質問者が選んだベストアンサー

  • ベストアンサー
回答No.3

ID属性はHTMLDocumentにおいて1箇所しか指定できないことになっているので、コレクションや配列では返されません。HtmlElementとして受け取れば大丈夫だと思います。HTMLに指定したIDが複数存在する場合は最初に見つかった要素だけが、存在しない場合はNothingが返されます。 Dim idElement As HtmlElement = WebBrowser1.Document.GetElementById("hogehoge") If idElement IsNot Nothing Then idElement.OuterHtml = ""

sakurav2
質問者

お礼

ご回答ありがとうございます! WebBrowser1のDocument_Completeのほうに教えてくださったとおりの Dim idElement As HtmlElement = WebBrowser1.Document.GetElementById("hogehoge") If idElement IsNot Nothing Then idElement.OuterHtml = "" で、解決しました! 余談ですがembad,script指定はどうしようもできないのですかね、まぁ今回はdivで消すことができました。 ありがとうございます。

その他の回答 (2)

回答No.2

VB2005のコードです。 Private Sub WebBrowser1_DocumentCompleted(ByVal sender As System.Object, ByVal e As WebBrowserDocumentCompletedEventArgs) Handles WebBrowser1.DocumentCompleted   For Each emt As HtmlElement In WebBrowser1.Document.Images     emt.OuterHtml = ""   Next End Sub 画像はこれで非表示になりましたが、<SCRIPT>についてはこの方法では出来ませんでした。DocumentCompleteが呼び出されるよりも前に、WebBrowserが<SCRIPT>のコンパイルを行っていて、あとから消してもそれが反映されない、といったことが原因のような気がします。 <IMG>についても一旦HTMLが完全に読み込まれてから削除する形になるので、画像へのアクセスが完全になくなったわけでないと思います。 一応<SCRIPT>の削除を試したコードも載せておきます。   For Each emt As HtmlElement In WebBrowser1.Document.GetElementsByTagName("script")     emt.OuterHtml = ""   Next   For Each emt As HtmlElement In WebBrowser1.Document.GetElementsByTagName("head")     For Each childemt As HtmlElement In emt.GetElementsByTagName("script")       emt.OuterHtml = ""     Next   Next

sakurav2
質問者

補足

回答ありがとうございます。 試してみたところ   For Each emt As HtmlElement In WebBrowser1.Document.GetElementsByTagName("img")     emt.OuterHtml = ""   Next などでも削除できたようです、が。 embadタグやscriptタグではどうやら無効なようです。 別の方法を試してみようとHTMLでdivに付いているidを指定してはどうかと思いましたがIDの指定の仕方がよくわかりません。 試してみたコード For Each emt As HtmlElement In WebBrowser.Document.GetElementById("hogehoge") emt.OuterHtml = "" Next エラー 式の型は 'System.Windows.Forms.HtmlElement' で、コレクション型ではありません。 分かりましたらお願いします。

回答No.1

リンク先によると「HtmlElement」の名前空間は「System.Windows.Browser」のようです。 エラーでは「System.Windows.Forms」になってます。 正しい名前空間を指定されてはいかがでしょう。

関連するQ&A