2013-10-10 28 views
7

Ş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ı

enter image description here

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) 

cevap

3

sorun WebKit şapka (veya bir seçim sınır) gitmek yerler hakkında fikir sabit olmasıdır ve Görüşme sırasında aralığının değiştirilmiş versiyonu seçmektir: Şu ana kullanıyorum kodudur seçimin addRange() yöntemi. Bunu Stack Overflow üzerinde birkaç kez yazdım;

+0

adresini [rangy] (https://code.google.com/p/rangy/) bu sorunu çözer mi: Burada birkaç örnek vardır? –

+0

@ ream88: Ne yazık ki değil. Gerçekten bir düzeltme değil, sadece kötü bir çözüm var. –

+0

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. –

İlgili konular