- ベストアンサー
WebBrowserで特定の要素を削除
- Form内のWebBrowserで<img>や<script>などの特定の要素を削除する方法を知りたいです
- VB2008や2005系の開発環境で試してみたがエラーが発生しました
- Yahoo!知恵袋でも同様の質問があり、解決されていないようです
- みんなの回答 (3)
- 専門家の回答
質問者が選んだベストアンサー
ID属性はHTMLDocumentにおいて1箇所しか指定できないことになっているので、コレクションや配列では返されません。HtmlElementとして受け取れば大丈夫だと思います。HTMLに指定したIDが複数存在する場合は最初に見つかった要素だけが、存在しない場合はNothingが返されます。 Dim idElement As HtmlElement = WebBrowser1.Document.GetElementById("hogehoge") If idElement IsNot Nothing Then idElement.OuterHtml = ""
その他の回答 (2)
- うぃず(@Wizard_Zero)
- ベストアンサー率69% (344/495)
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
補足
回答ありがとうございます。 試してみたところ 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' で、コレクション型ではありません。 分かりましたらお願いします。
- cistronezk
- ベストアンサー率38% (120/309)
リンク先によると「HtmlElement」の名前空間は「System.Windows.Browser」のようです。 エラーでは「System.Windows.Forms」になってます。 正しい名前空間を指定されてはいかがでしょう。
お礼
ご回答ありがとうございます! WebBrowser1のDocument_Completeのほうに教えてくださったとおりの Dim idElement As HtmlElement = WebBrowser1.Document.GetElementById("hogehoge") If idElement IsNot Nothing Then idElement.OuterHtml = "" で、解決しました! 余談ですがembad,script指定はどうしようもできないのですかね、まぁ今回はdivで消すことができました。 ありがとうございます。