Şu anda web için bir Markdown düzenleyicisi hazırlıyorum. Markdown etiketleri, HTML eşdeğerlerini Range arabirimiyle ekleyerek gerçek zamanlı olarak önizlenir. kodunu takiben çalışma MDN'yi göre olması gereken kullanılır:Bir DOM öğesinden sonra seçimi taşı
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 çalışır: Bazı kalın metin
http://f.cl.ly/items/093R343i23402K190k1t/firefox.gif
Krom değil: Bazı kalın yazı
Herhangi bir öneride sorun ne olabilir? Bu konudaki bilgiler nadirdir.
Cevap
sayesinde Aşağı @Tim için, onun sözü halkalarından biri cevaptır içinde açıklanır görünmez karakter geçici çözümü kullanarak düzelttim.
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)
adresini [rangy] (https://code.google.com/p/rangy/) bu sorunu çözer mi: Burada birkaç örnek vardır? –
@ ream88: Ne yazık ki değil. Gerçekten bir düzeltme değil, sadece kötü bir çözüm var. –
Görünmez char çözümünü kullanarak düzeltildi. Çok teşekkür ederim, umarım bu tutarsızlıklar bir gün giderilecektir. –