Aktualnie buduję edytor Markdown dla sieci. Znaczniki Markdown są przeglądane w czasie rzeczywistym poprzez dołączanie ich odpowiedników HTML za pomocą interfejsu Range. Poniższy kod jest używany, co powinno działać według MDN:Przenoszenie zaznaczenia po elemencie DOM
var range = document.createRange()
var selection = window.getSelection()
range.setStart(textNode, start)
range.setEnd(textNode, end + 2)
surroundingElement = document.createElement('strong')
range.surroundContents(surroundingElement)
var cursorRange = document.createRange()
cursorRange.setStartAfter(surroundingElement)
selection.removeAllRanges()
selection.addRange(cursorRange)
Firefox działa: Niektóre bold tekst
http://f.cl.ly/items/093R343i23402K190k1t/firefox.gif
nie Chrome: Niektóre tekst pogrubiony
Jakieś sugestie co może być nie tak? Informacje na ten temat są rzadkie.
Odpowiedź
Dzięki @Tim Dół, naprawiłem go za pomocą niewidzialnej obejście znaków opisał w jednym z linków zawartych w to odpowiedź. Jest to kod używam teraz:
var range = document.createRange()
range.setStart(textNode, start)
range.setEnd(textNode, end + 2)
surroundingElement = document.createElement('strong')
range.surroundContents(surroundingElement)
var selection = window.getSelection()
var cursorRange = document.createRange()
var emptyElement = document.createTextNode('\u200B')
element[0].appendChild(emptyElement)
cursorRange.setStartAfter(emptyElement)
selection.removeAllRanges()
selection.addRange(cursorRange)
Czy Twój [smukły] (https://code.google.com/p/rangy/) rozwiązać ten problem? –
@ ream88: Niestety nie. Naprawdę nie ma rozwiązania, tylko nieprzyjemne obejścia. –
Naprawiono to za pomocą niewidocznego obejścia char. Dziękuję bardzo, mam nadzieję, że te niespójności zostaną kiedyś naprawione. –