2009-02-06 2 views
2

На какой стадии мой вход в текстовое поле меняется от того, что этот необработанный текст, и стать HTML? Например, сказать, что я отступа 4 пробелаStackoverflows Система WMD - Где мой вход становится HTML?

like this 

Тогда ВРС Showdown.js сделает это правильно ниже этого текстового поля я печатаю. Но текстовая область по-прежнему буквально содержит

like this 

Так PHP серверная сторона, ответственная за перевод всех тех же вещей, что showdown.js делает навсегда HTML в базе данных SoF?

ответ

1

Ну, в первую очередь StackOverflow построен на ASP.NET, но, по сути, символы в текстовом поле rich переходят взад и вперед.

8

Есть несколько других сообщений здесь об этом, но в основном он работает именно так. Или, по крайней мере, так я делаю это на своем веб-сайте, используя ОМУ; см. мой профиль, если вы заинтересованы в проверке моей реализации ОМУ.

  1. Пользователь вводит Markdown на клиенте, и showdown.js работает в режиме реального времени в браузере (чистый стороне клиента JavaScript, нет AJAX или что-нибудь подобное), чтобы дать пользователю предварительный просмотр.
  2. Затем, когда пользователь отправляется на сервер, WMD отправляет Markdown (вам нужно настроить WMD, чтобы сделать это, хотя по умолчанию WMD отправляет HTML).
  3. Запустить showdown.js сервер, чтобы преобразовать Markdown в HTML. Теоретически вы можете использовать какой-то другой метод, но имеет смысл попытаться получить такое же преобразование на сервере, которое пользователь видит на клиенте, кроме любой фильтрации HTML-тегов, которую вы хотите сделать на стороне сервера.
  4. Как уже отмечалось, для предотвращения проблем с межсайтовыми сценариями (XSS) вам потребуется выполнить соответствующую фильтрацию HTML-тегов. Это важно и нетривиально, поэтому будьте осторожны.
  5. Сохраните Markdown и HTML в базе данных — Markdown, потому что если пользователи хотят редактировать свои сообщения, вы хотите дать им Markdown и HTML, чтобы вам не нужно было преобразовывать Markdown в HTML каждый раз, когда вы отображать ответы.

Вот несколько связанных должностей.

+0

, когда вы говорите: «Запустите showdown.js на стороне сервера, чтобы преобразовать Markdown в HTML». ... как бы я это сделал? – Andrew

+0

В Java я использую Rhino для запуска showdown.js на сервере. Java 6 имеет встроенную поддержку для сценариев, и вы можете выбрать Rhino (механизм JavaScript) в качестве реализации. –