2010-10-22 27 views
29

Bir yanıt için yüksek ve alçaktan arıyorum, ancak başarısız oldum.contenteditable div içindeki seçili metni değiştirin

Seçilen metinde contenteditable div yerine çapraz tarayıcı çözümü var mı? Kullanıcıların sadece bazı metni vurgulamalarını ve vurgulanan metni xxxxx olarak değiştirmelerini istiyorum. Tüm büyük tarayıcılarda işi yapacak

cevap

63

şu:

function replaceSelectedText(replacementText) { 
    var sel, range; 
    if (window.getSelection) { 
     sel = window.getSelection(); 
     if (sel.rangeCount) { 
      range = sel.getRangeAt(0); 
      range.deleteContents(); 
      range.insertNode(document.createTextNode(replacementText)); 
     } 
    } else if (document.selection && document.selection.createRange) { 
     range = document.selection.createRange(); 
     range.text = replacementText; 
    } 
} 
+4

bunun o kadar basit olduğuna inanamıyorum. İşe yarıyor. Teşekkürler! – Judy

+0

Bu, Chrome'da benim için çalışmaz (INPUT, TEXTAREA veya içerik düzenlenebilir). Şuna da inanıyorum çünkü Chrome çoklu aralıkları desteklemiyor. Window.getSelection davası içine düşüyor, ama sonra sel.rangeCount yanlıştır, ve "else" cümlesi yoktur .. –

+2

@DavidJeske: Bu kesinlikle Chrome'da içerikli öğeler için çalışır, ancak girişler veya tekstilde değil: -IE tarayıcıları, bu kod düzenli içerikteki seçimlere özeldir. –

İlgili konular