Я работаю над приложением, которое требует вводимого пользователями содержания, и я решил использовать редактора Скидки с цены стиля переполнения стека. После исследования этой темы в течение последних нескольких дней я понимаю, что существуют многочисленные ветвления основного редактора WMD, некоторых с несколькими основными улучшениями и некоторых с серьезными различиями от Переполнения стека один.
Так как это будет основой приложения, я хотел бы запуститься с лучшей кодовой базы, я могу. Я был бы счастлив, если кто-либо может рекомендовать который из многих решений там лучшие соответствия мои потребности.
Ниже требования, плюс то, что мне удалось уже найти. Я надеюсь, что этот вопрос поможет мне решить, какая версия пойти с и возможно помочь мне обнаружить порт это - еще лучшее пригодное для моих потребностей.
img
URL).Вот несколько кодовых баз, я посмотрел на с мыслями. Очевидно, я мог бы пропускать другое решение там.
В конце концов, присмотревшись еще немного в поисках готового редактора, я остановился на порте OpenLibrary WMD, расположенном по адресу http: // github .com / openlibrary / wmd .
В итоге я реализовал функциональность, которая показывает / скрывает окно редактирования, что, по большей части, оказалось довольно легко. Я не расширял редактор какими-либо кнопками, что, я уверен, потребует некоторой возни с исходным кодом, но я не думаю, что это будет слишком большой проблемой.
Есть несколько отличий от редактора Stack Overflow:
вместо того, чтобы считаться один абзац. Я предпочитаю этот способ, поэтому меня устраивает это изменение. Что ж, надеюсь, это поможет любому, кто ищет похожий редактор. Если я закончу настройку редактора, я создам свою собственную ветку (она под лицензией MIT), но сейчас я ухожу, не возясь с исходным кодом.
Для части предварительного просмотра в реальном времени с библиотекой Showdown довольно легко работать (и, как указывает Эдан, она включена в базу кода)
Вы используете ее примерно так (не необходимо использовать jQuery, если вы не хотите)
$(document).ready(function(){
var converter = new Attacklab.showdown.converter();
function update_description_preview(){
$('#description-preview').html(converter.makeHtml($("#id_description").val()));
}
update_description_preview();
$("#id_description").keyup(function(){
update_description_preview();
});
});
Функция update_description_preview использует объект-преобразователь для чтения разметки в элементе #id_description и выгружает его в элемент # description-preview.
Здесь я вызываю функцию сразу после ее определения для инициализации окон предварительного просмотра (в редакторе был предварительно загружен некоторый текст)
Последний бит просто регистрирует функцию с событием нажатия клавиши.