📚

VSでhtmlを表示し、クリックした要素を取得するサンプル備忘録

に公開

using System.Diagnostics;
using mshtml;
using System;
using System.IO;
using System.Windows.Forms;

namespace texteditor
{
    public partial class Form1 : Form
    {
        // WebBrowserコントロールの作成
        WebBrowser webBrowser = new WebBrowser();

        public Form1()
        {
            InitializeComponent();
            InitializeWebBrowser();
            // Formクラスに追加


        }
       
        private void InitializeWebBrowser()
        {
            webBrowser.Dock = DockStyle.Fill;
            this.Controls.Add(webBrowser);
            //ここに好きなファイルパスを指定してね。
            string html = File.ReadAllText("C://Users//username//Downloads//write_test.txt");

            webBrowser.DocumentText = html;

            webBrowser.Document.Click += WebBrowser_Document_Click;
        }

        private void WebBrowser_Document_Click(object sender, HtmlElementEventArgs e)
        {
            if (webBrowser.Document == null) return;

            // クリック位置の要素を取得
            IHTMLDocument2 doc = webBrowser.Document.DomDocument as IHTMLDocument2;
            IHTMLElement element = doc.elementFromPoint(e.ClientMousePosition.X, e.ClientMousePosition.Y) as IHTMLElement;

            if (element != null)
            {
                // 要素の情報を取得
                string tagName = element.tagName;
                string innerText = element.innerText;
                string innerHTML = element.innerHTML;
                string outerHTML = element.outerHTML;
                string classList = element.className;

                Debug.WriteLine($"要素情報:");
                Debug.WriteLine($"タグ名: {tagName}");
                Debug.WriteLine($"テキスト: {innerText}");
                Debug.WriteLine($"内部HTML: {innerHTML}");
                Debug.WriteLine($"外部HTML: {outerHTML}");
                Debug.WriteLine($"クラス名一覧: {classList}");

                // 特定の属性があれば取得
                if (element.getAttribute("href") != null)
                {
                    Debug.WriteLine($"リンク先: {element.getAttribute("href")}");
                }
                if (element.getAttribute("id") != null)
                {
                    Debug.WriteLine($"ID: {element.getAttribute("id")}");
                }
                if (element.getAttribute("class") != null)
                {
                    Debug.WriteLine($"クラス: {element.getAttribute("class")}");
                }
            }
        }
    }
}

Discussion