2014-02-11 2 views
0

Я создаю текстовый редактор, однако функция подчеркивания удаления не будет работать. рабочий код Пример: jsfiddlestubborn underline не работает

Вот код, который дает проблему

else if (tag == "u") { 
    sell = window.getSelection().getRangeAt(0); 

    if (selectionIsUnderlined()) { 
     node = range.createContextualFragment("<font style='text-decoration: none !important'>" + sell + "</font>"); 
    } else { 
     node = range.createContextualFragment("<u>" + sell + "</u>"); 
    } 

    range.deleteContents(); 
} 

какие-нибудь идеи?

+0

какая проблема дает код? – Muath

+0

Если я нажму кнопку «U», выбранный код станет подчеркнутым. Если я снова нажимаю кнопку «U», он обнаруживает подчеркнутый код. то он должен удалить подрыв, однако это не работает. – Arnout

+1

Возможно, это связано с тем, что 'createContextualFragment' является экспериментальной спецификацией. https://developer.mozilla.org/en-US/docs/Web/API/range.createContextualFragment – Andy

ответ

1

Ну проблемы с удалением подчеркивания, что выбор не принимать во внимание оберточной <u> элемента. Содержимое внутри <u> было удалено, и новый контент с тегом <font> был вставлен внутри метки <u>.

Я попытался подняться на один узел и проверить, если он <u>, а затем удалить узел:

if (selectionIsUnderlined()) { 
    node = range.createContextualFragment(
      "<font style='text-decoration: none !important'>" + sell + "</font>"); 
    var nd = sel.anchorNode; 
    if(nd.nodeName!=='span'){ 
     nd = nd.parentNode; 
    } 

    if (nd) { 
     nd.remove(); 
    } 

Обновленный скрипку here

PS: - это просто эксперимент. рассмотрите совместимость с производительностью/браузером и другие плюсы и минусы перед ее использованием.

0

попробовать что-то вроде этого:

var node=""; 
var divs=0; 

if (selectionIsUnderlined()) { 
    node+="<div class=underline>"; 
    divs++; 
} 

if(selectionIsBold()){ 
    node+="<div class=bold>"; 
    divs++; 
} 

node+=sell; 

Затем закройте дивы.

.underline{ 
    text-decoration: underline; 
} 

и т.д ..

+0

Я пробовал, но это не сработало:/ – Arnout

+0

Вы пытались изменить стиль с помощью jQuery/JS? – user3290463

+0

да, я пробовал это. – Arnout