замена тегов b, i, u, s

Added by Роман Рубан over 1 year ago

как убрать автозамену перечисленных тегов span'ом?


Replies (6)

RE: замена тегов b, i, u, s - Added by Роман Рубан over 1 year ago

проблема в браузере.

если выделить слово и сделать его жирным, наклонным, подчеркнутым и зачеркнутым, то вот что возвращают различные браузеры:

<strong><em><span style="text-decoration:underline"><strike>word</strike></span></em></strong> - опера (10.51) / ie8;
<strong class=""><em class=""><span class="" style="text-decoration:underline"><strike class="">word</strike></span></em></strong> - ie (6/7)
<span style="font-weight: bold; font-style: italic; text-decoration: underline line-through;">word</span> - firefox (3.6.3)
<strong><em><span style="text-decoration:underline"><s>word</s></span></em></strong> - chrome (5.0.396.0)

можно каким-либо образом привести к единому виду?
<strong><em><u><strike>word</strike></u></em></strong>

RE: замена тегов b, i, u, s - Added by Dmitry Levashov over 1 year ago

Известная проблема, попробуем исправить в след версии

RE: замена тегов b, i, u, s - Added by Роман Рубан over 1 year ago

не смог найти в коде где идет эта подстановка, не подскажете где искать?

RE: замена тегов b, i, u, s - Added by Роман Рубан over 1 year ago

частично исправил:

в elRTE.prototype.options (elrte.full.js, строка 2482) отсутствуют параметры stripWhiteSpace, styleWithCSS - из-за последнего в firefox появлялся span

RE: замена тегов b, i, u, s - Added by Роман Рубан over 1 year ago

еще исправления:

<span style="text-decoration:underline"> - я конечно понимаю что тэг U осуждается спецификацией HTML, но у меня на нем прописан свой стиль, потому он мне нужен. чтобы убрать подстановку спана со стилем, нужно закомментировать строку u : ['span', 'text-decoration:underline']

так же chrome заместо тега strike подставляет его аналог - s,
чтобы заставить его вставлять нужный тег, нужно добавить в переменной map строку s : ['strike']

вышеперечисленное приводит к общему виду строку <strong><em><u><strike>word</strike></u></em></strong>, для всех браузеров, кроме ie6/7 (тут по прежнему остаются пустые классы)

RE: замена тегов b, i, u, s - Added by Роман Рубан over 1 year ago

а, да, еще нужно добавить s в строку:
html = html.replace(/\<(\/?)(b|i|u|font|center|nobr|big|small)(\s+[^>]*)?\>/gi, function(t, s, n, a) {

заодно можно убрать от туда u и получим:
html = html.replace(/\<(\/?)(b|i|s|font|center|nobr|big|small)(\s+[^>]*)?\>/gi, function(t, s, n, a) {

(1-6/6)