Как я могу перехватить и изменить уценку из редактора уценки wmd перед ее публикацией?
-
21-09-2019 - |
Вопрос
Я запускаю сайт Stack Exchange и хочу иметь возможность перехватывать текст вопроса до и после того, как сценарий уценки доберется до него.
Я хочу иметь возможность войти [custom-tag]stuff to be altered[/custom-tag]
в окне вопроса, а затем удалите материал, который нужно изменить (поскольку стандартный механизм уценки не сможет его интерпретировать), сохраните его, а затем замените теги на выходе материалом, который нужно изменить после того, как он был обрабатывается моим собственным (серверным) движком.
Я терплю неудачу на первом этапе;Я не могу найти уценку JavaScript.Это где-то спрятано? /content/js/master.js
?
Редактировать:Я постараюсь прояснить это на примере того, чего я пытаюсь достичь.
Я управляю сайтом SE, ориентированным на покер.Игроки обсуждают покерные раздачи, но вместо ввода текстовой расшифровки того, что произошло в раздаче, они используют конвертер, чтобы сделать ее более читабельной.
Итак, вместо того, чтобы публиковать это на форуме:
PokerStars Game #29112867044: Omaha Pot Limit ($100/$200) - 2009/06/07 19:51:27 ET Table 'Thomsen' 9-max Seat #2 is the button Seat 2: Mary & Joey ($14729 in chips) Seat 4: William ($28306 in chips) Mary & Joey: posts small blind $100 William: posts big blind $200 *** HOLE CARDS *** Mary & Joey: raises $400 to $600 William: calls $400 *** FLOP *** [6d Td 3c] William: checks Mary & Joey: checks *** TURN *** [6d Td 3c] [Kc] William: checks Mary & Joey: checks *** RIVER *** [6d Td 3c Kc] [7d] William: bets $600 Mary & Joey: folds Uncalled bet ($600) returned to William William collected $1198 from pot William: doesn't show hand *** SUMMARY *** Total pot $1200 | Rake $2 Board [6d Td 3c Kc 7d] Seat 2: Mary & Joey (button) (small blind) folded on the River Seat 4: William (big blind) collected ($1198)
сначала они перейдут на сторонний веб-сайт и преобразуют его в следующее:
PokerStars Пот-Лимит Омаха, $200,00BB (2 руки)
СБ ($14729)
ББ ($28306)
Префлоп:
МБ ставит $600, ББ коллирует $400
Флоп: ($1200) 6, 10, 3 (2 игрока)
BB чекает, SB чекает
Повернуть:(1200 долларов США) тыс. (2 игрока)
BB чекает, SB чекает
Река: ($1200) 7 (2 игрока)
ББ ставит 600 долларов, 1 раз
Общий банк: $1200 | Грабли: $2
Я хочу вырезать шаг, на котором пользователь должен перейти на сторонний веб-сайт, вставить его в руку, выбрать вывод HTML, а затем скопировать и вставить результат в вопрос.Вместо этого я хочу, чтобы они могли просто обернуть необработанный ручной тест тегами [hand][/hand], и преобразование будет обрабатываться автоматически.
Редактировать 2:
При дальнейшем расследовании выяснилось, что это невозможно (без большого количества хакерского JS).Сначала нужно будет обойти проблемы с междоменным доступом Ajax, чтобы использовать любую внешнюю службу для преобразования.
Тогда, если вам удастся переопределить предварительный просмотр WMD - вам все равно придется придумать, что делать, когда фактический ответ отображается нормально.Один из способов сделать это — заставить JS искать тег всякий раз, когда отображается какой-либо вопрос или ответ, и обновлять DOM преобразованной версией, что было бы отстой с точки зрения производительности.
Я думаю, мне придется подождать и надеяться, что SE предоставит нам какой-нибудь другой способ обойти это.
Решение
WMD автоматически заполняет элемент предварительного просмотра по мере ввода, верно?Ну, для этого нужен где-то конвертер.Этот конвертер — Showdown (который вы могли бы получить здесь).Вот его использование (взято из исходного файла):
// Showdown usage:
var text = "Markdown *rocks*.";
var converter = new Showdown.converter();
var html = converter.makeHtml(text);
Это означает, что вы можете просто не использовать предоставленный элемент предварительного просмотра в пользу своего собственного, который вы заполняете самостоятельно.Кроме того, вам нужно будет послушать keypress
событие в текстовом поле самостоятельно и выполните синтаксический анализ текста, а затем вызовите Showdown.Когда результат будет таким, как вам нравится, добавьте его в свой собственный элемент предварительного просмотра.