Xem trước Markdown

Xem Markdown của bạn được hiển thị ngay khi gõ, trong trình duyệt, với mọi HTML thô được thoát (escape) thay vì được thực thi.

Chạy hoàn toàn trong trình duyệt của bạn. Không có gì được tải lên, ghi log hay lưu trữ.

Xem trước

HTML được tạo ra

Viết Markdown ở bên trái và đọc nó ở bên phải. Mọi thứ diễn ra trong trình duyệt của bạn, nên một bản nháp bạn chưa muốn cho ai xem cũng không phải đưa cho máy chủ xem trước.

Cách hoạt động

Tài liệu được đọc từng dòng thành các khối — tiêu đề, đoạn văn, danh sách, trích dẫn, mã, bảng — rồi văn bản của từng khối được đọc để tìm các phần nội dòng: nhấn mạnh, đoạn mã, liên kết và hình ảnh. Mọi thứ trình hiển thị không nhận ra đều giữ nguyên là văn bản.

HTML thô được thoát thay vì được cho đi qua. Nếu bạn gõ một thẻ, bạn sẽ thấy thẻ đó. Đây là một sự khác biệt có chủ ý so với hầu hết các trình hiển thị, vốn cho phép một tập con được chọn lọc, và lý do là việc chọn đúng tập con đó là công việc đã nhiều lần thất bại ở những dự án lớn hơn nhiều.

Một liên kết chỉ được tạo khi địa chỉ của nó bắt đầu bằng một scheme trong một danh sách ngắn, được kiểm tra trên dạng đã giải mã của địa chỉ chứ không phải trên những gì được gõ. Khi bị từ chối, văn bản được giữ lại còn liên kết thì không, để bạn thấy rằng đã có thứ gì đó ở đó.

Ví dụ

Trường hợp Dữ liệu nhập Kết quả
Nhấn mạnh và code nội dòng **bold**, *italic* and `code`. <p><strong>bold</strong>, <em>italic</em> and <code>code</code>.</p>

Câu hỏi thường gặp

Tài liệu của tôi có bị gửi đi đâu không?

Không. Trình hiển thị là JavaScript chạy trên trang này. Không có gì được tải lên, ghi log hay lưu trữ: bạn có thể ngắt mạng mà công cụ vẫn hoạt động.

Sao HTML của tôi hiện ra dưới dạng văn bản?

Vì nó được thoát một cách có chủ ý. Markdown cho phép tài liệu chứa HTML, và cho HTML đó đi qua nghĩa là phải quyết định thẻ nào và thuộc tính nào là an toàn — một quyết định tinh vi, thay đổi theo sự thay đổi của trình duyệt, và đã nhiều lần bị làm sai bởi những dự án có nhiều nguồn lực hơn hẳn. Thoát mọi thứ thì không có kiểu thất bại đó. Cái giá là một tài liệu dựa vào HTML nội dòng sẽ không hiển thị giống như trên GitHub, và đó là sự đánh đổi được chấp nhận.

Có phải đúng chuẩn CommonMark không?

Không, và nói có sẽ là gây hiểu lầm. Đây là một tập con, cộng thêm bảng, danh sách công việc và chữ gạch ngang theo kiểu GitHub. Nó hỗ trợ tiêu đề, đoạn văn, nhấn mạnh, đoạn mã và khối mã, liên kết, hình ảnh, danh sách lồng nhau, trích dẫn và đường kẻ ngang. Liên kết tham chiếu, chú thích cuối trang và khối HTML chưa được triển khai.

Sao hình ảnh từ trang khác không hiện?

Vì trang này không cho phép chính nó tải hình ảnh từ trang khác. Tải một hình ảnh sẽ cho máy chủ đó biết bạn đang đọc tài liệu này, và vào lúc nào — đúng là sự rò rỉ mà một bản xem trước cục bộ tồn tại để ngăn chặn. Thẻ hình ảnh vẫn có trong HTML đầu ra, nên nó hoạt động ở nơi bạn dán vào: chỉ là nó không được kích hoạt từ đây.

Còn một liên kết như javascript:… thì sao?

Nó không trở thành liên kết. Scheme được so với một danh sách ngắn — http, https, mailto, tel, ftp, hoặc không có scheme nào với đường dẫn tương đối — và việc kiểm tra được thực hiện trên địa chỉ đã giải mã, vì trình duyệt giải các thực thể trong một thuộc tính trước khi hành động theo nó. Văn bản của liên kết vẫn hiển thị để bạn thấy đã có gì ở đó.

Cần biết

  • HTML mà bản xem trước hiển thị chính là HTML công cụ đưa cho bạn. Chỉ có một đầu ra, chứ không phải một bản an toàn để hiển thị và một bản khác để sao chép.
  • Các tiêu đề không nhận thuộc tính id. Một id lấy từ tài liệu của bạn sẽ dùng chung không gian tên với các id của trang này, và một xung đột sẽ làm hỏng trang bao quanh bản xem trước.
  • Liên kết đến trang khác mang rel="nofollow noopener noreferrer", nên một trang mở từ đây không có quyền kiểm soát nào đối với trang này.

Tất cả công cụ Lập trình