§

Tampal HTML

§

Mentah

§

Pratonton

Pratonton dibersihkan melalui DOMPurify — tag skrip, pengendali acara, dan URI javascript: dibuang sebelum dirender.

Markdown ialah lingua franca dokumentasi perisian di AS dan UK. Setiap README GitHub, jawapan Stack Overflow, dan ulasan Reddit melewati penghurai Markdown, dan lebih 100 juta post pembangun di Stack Overflow bergantung kepada CommonMark untuk rendering yang boleh dipercayai. Makmal persekutuan AS menjalankan saluran paip MkDocs dan Sphinx yang menukar fail sumber Markdown kepada portal dokumentasi statik, manakala pereka kandungan GOV.UK mengarang halaman perkhidmatan dalam Markdown sebelum diterbitkan. Notion, Obsidian, dan Bear menawarkan pengambilan nota Markdown-first kepada berjuta-juta pekerja berpengetahuan di AS dan UK, dan surat berita Substack menyusun draf Markdown ke e-mel HTML. Menukar HTML yang dieksport kembali kepada Markdown adalah kerja harian bagi penulis teknikal, penyelenggara sumber terbuka, dan jurutera platform di kedua-dua pasaran.

Apakah penukaran HTML ke Markdown?

HTML ialah penandaan yang dirender yang dipaparkan oleh pelayar — <h1>, <ul>, <table>, <a> dan selebihnya. Markdown ialah format teks biasa ringan yang menggunakan tanda baca minimal (# untuk tajuk, * untuk penekanan, - untuk item senarai) untuk mengekod struktur yang sama. GitHub Flavored Markdown (GFM) memanjangkan spesifikasi CommonMark asal dengan jadual, strikethrough, senarai tugas, dan pautan automatik. Menukar HTML ke Markdown mengembalikan HTML yang dirender atau dieksport kepada Markdown teks biasa yang boleh diedit — tepat sekali yang diperlukan oleh penghijrahan kandungan dari CMS atau pembersihan README.

Ciri-ciri GitHub Flavored Markdown mana yang disokong oleh output?

Enjin turndown@7.2.0 yang digabungkan dengan sambungan turndown-plugin-gfm mengeluarkan superset GFM penuh daripada HTML anda: tajuk gaya ATX # hingga ###### daripada <h1><h6>, senarai tertib dan tidak tertib dengan penyarangan, tebal **text** dan italik *text*, strikethrough ~~text~~ daripada <del>, pautan sebaris [text](url) dan imej ![alt](src), blok kod berpagar dengan petunjuk bahasa (```js), rentang kod sebaris `code`, jadual paip daripada <table>, senarai tugas GFM - [ ] / - [x] daripada input kotak semak, petikan blok > dan peraturan mendatar ---. Panel pratonton merender semula Markdown yang dihasilkan dengan marked@12.0.2 supaya anda boleh mengesahkan penukaran secara visual.

Bagaimana penukaran HTML ke Markdown berfungsi?

Setiap penukaran dijalankan secara tempatan di pelayar anda menggunakan tiga perpustakaan yang digabungkan — tiada CDN, tiada fetch, tiada telemetri. Langkah-langkah utama adalah:

  1. Bersihkan: HTML yang ditampal mula-mula dijalankan melalui DOMPurify.sanitize(html, { USE_PROFILES: { html: true } }) untuk membuang elemen <script>, setiap pengendali acara on*, dan URI javascript: sebelum apa-apa menelusuri penandaan. DOMPurify ialah sanitizer XSS yang sama yang digunakan oleh Mozilla MDN, Atlassian, dan Microsoft 365.
  2. Tukar: turndownService.turndown menelusuri DOM yang dibersihkan dan mengeluarkan GitHub Flavored Markdown — tajuk menjadi awalan #, senarai menjadi item - / 1., <table> menjadi jadual paip, dan sebagainya. Markdown ditulis ke <textarea> baca sahaja melalui value (bukan innerHTML), jadi ia selamat secara semula jadi.
  3. Render: Markdown yang dihasilkan dihurai semula oleh marked.parse, dibersihkan semula melalui DOMPurify, dan ditetapkan kepada innerHTML panel pratonton supaya anda mendapat pengesahan visual bahawa Markdown melakukan perjalanan pulang pergi ke struktur yang dijangkakan. Mod langsung menyanggah input sebanyak 150 ms supaya output dikemas kini semasa menampal tanpa membebankan penghurai.

Mengapa tukar HTML ke Markdown dengan alat ini?

  • Privasi: setiap laluan pembersihan, penukaran, dan rendering berlaku di pelayar anda. HTML — termasuk catatan CMS yang dieksport, dokumentasi dalaman, dan kod sumber halaman sulit — tidak pernah mencapai pelayan kami.
  • Selamat XSS secara lalai: HTML yang ditampal dijalankan melalui DOMPurify sebelum turndown menelusurinya, dan panel pratonton menjalankan semula HTML yang dirender melalui DOMPurify sebelum innerHTML, jadi menampalkan penandaan yang mengandungi tag <script> atau pengendali onerror= menghasilkan pratonton yang tidak aktif dan Markdown yang bersih.
  • GFM lengkap: elemen <table> ditukar kepada jadual paip Markdown, <del> kepada strikethrough, dan senarai kotak semak kepada senarai tugas GFM. Kebanyakan penukar dalam talian menggugurkan jadual pada laluan HTML → Markdown — sambungan turndown-plugin-gfm yang digabungkan memeliharanya.

Apakah aplikasi biasa penukaran HTML ke Markdown?

Menukar HTML ke Markdown muncul dalam penghijrahan kandungan, dokumentasi, dan pengarkiban:

  • Penghijrahan CMS: mengeksport catatan WordPress atau Ghost sebagai HTML dan menukar kepada Markdown untuk pembinaan semula laman statik Hugo / Jekyll / 11ty / Astro. Penukaran memelihara tahap tajuk, pautan, senarai, dan penekanan sebaris.
  • Pembersihan README: menampal HTML yang dirender bagi halaman wiki atau artikel web dan menariknya kembali kepada Markdown yang boleh diedit untuk README projek atau laman dokumentasi, bukannya menaip semula struktur secara manual.
  • Pengarkiban dan nota: menangkap e-mel HTML atau kliping web dan menukarnya kepada Markdown untuk disimpan dalam Obsidian, Notion, atau pangkalan pengetahuan teks biasa — Markdown kekal mesra-diff dan boleh bertahan daripada perubahan format.

Bagaimana contoh penukaran HTML ke Markdown kelihatan?

Menampal <h2>Tajuk</h2><ul><li>a</li><li>b<ul><li>bersarang</li></ul></li></ul> menghasilkan Markdown dengan ## Tajuk, senarai titik bersarang, dan panel pratonton yang merender semula kepada struktur bersarang yang sama. Menampal <table> dengan baris pengepala dan dua baris data menghasilkan jadual paip setara | lajur | lajur | — mengesahkan bahawa penukaran memelihara tajuk, senarai, dan jadual.

Adakah penukar HTML ke Markdown ini berjalan sepenuhnya di pelayar saya?

Ya. Setiap laluan pembersihan, penukaran, dan rendering dijalankan secara tempatan sebagai JavaScript dalam tab pelayar anda. Tiga perpustakaan yang digabungkan — turndown@7.2.0 (dengan turndown-plugin-gfm@1.0.2), marked@12.0.2, dan DOMPurify@3.1.7 — dihantar dari asal yang sama dengan halaman, jadi tiada kebergantungan CDN, tiada fetch, tiada XMLHttpRequest, tiada navigator.sendBeacon pada input. Alat ini juga berfungsi luar talian setelah halaman dimuatkan, kerana ia adalah bundle HTML/CSS/JS statik dengan perpustakaan vendor disalin bersamanya. Catatan yang dieksport, dokumen dalaman, dan kod sumber halaman sulit kekal pada peranti anda.

Adakah panel pratonton yang dirender selamat XSS?

Ya. HTML yang ditampal dijalankan melalui DOMPurify.sanitize sebelum turndown menelusurinya, dan setiap rentetan HTML yang ditetapkan kepada innerHTML pratonton juga melewati DOMPurify.sanitize(html, { USE_PROFILES: { html: true } }). DOMPurify ialah sanitizer XSS sumber terbuka yang dikekalkan oleh Cure53; ia ialah perpustakaan yang sama yang digunakan oleh Mozilla MDN, Atlassian, dan Microsoft 365 untuk mengeraskan HTML yang diberikan oleh pengguna. Profil html lalai membuang elemen <script>, setiap atribut pengendali acara on* (onerror, onclick, dll.), dan skema URI javascript:. Menampalkan <img src=x onerror=alert(1)> menghasilkan pratonton di mana document.querySelector('#output-preview img[onerror]') mengembalikan null dan tiada amaran dipaparkan.

Adakah jadual GFM ditukar daripada HTML?

Ya. Arah HTML → Markdown menggunakan turndown-plugin-gfm, yang menambah peraturan turndown tersuai yang menelusuri nod <table> dan mengeluarkan Markdown jadual paip yang setara — baris pengepala, baris penjajaran |---|---| dan kemudian baris data. Kebanyakan penukar dalam talian menggugurkan jadual pada laluan ini; yang ini memeliharanya. Strikethrough (<del>text</del>~~text~~) dan senarai tugas (<input type="checkbox">- [ ] / - [x]) ditukar dengan cara yang sama.

Adakah HTML saya akan ditukar dengan betul?

Untuk set ciri GFM kanonik — tajuk h1 hingga h6, senarai tertib dan tidak tertib dengan penyarangan, tebal / italik / strikethrough, pautan sebaris, imej sebaris, blok kod berpagar dengan tag bahasa, rentang kod sebaris, jadual paip, senarai tugas, petikan blok, peraturan mendatar, dan pautan automatik — penukaran adalah bersih dan boleh diramalkan. Kes tepi: komen HTML (<!-- ... -->) dibuang (Markdown tidak mempunyai sintaks komen); gaya sebaris dan atribut kelas digugurkan kerana Markdown tidak mempunyai padanannya; dan tag sebaris yang tidak biasa seperti <sub> / <sup> ditukar kepada teks biasa. Ini adalah tingkah laku turndown yang didokumentasikan, bukan pepijat.

Adakah penyerlahan sintaks dalam blok kod berpagar disokong?

Tidak dalam v1. Blok kod berpagar dirender dalam pratonton dengan fon monospaced dan latar belakang halus tetapi tanpa penyerlahan token per bahasa. Menambah penyerlahan sintaks memerlukan penggabungan Prism atau highlight.js, yang masing-masing menambah 15–40 KB ditambah fail tatabahasa per bahasa dan matriks tema yang perlu diselaraskan dengan palet Workshop Terminal. Buat masa ini, pemapar memfokuskan pada ketepatan dan keselamatan XSS; jika terdapat permintaan pengguna untuk penyerlahan sebaris, togol pilihan-masuk adalah susulan yang boleh dilaksanakan.

Penukar HTML ke Markdown ini dihantar dengan turndown@7.2.0 (+ turndown-plugin-gfm@1.0.2), marked@12.0.2, dan DOMPurify@3.1.7 yang digabungkan pada asal yang sama, mengeluarkan set ciri GFM penuh, dan membersihkan setiap rentetan HTML yang dirender sebelum menyentuh DOM. Tiada muat naik, tiada CDN, tiada telemetri — setiap bait kekal di pelayar anda.