Seçilen metnin öncesinde veya sonrasında bir öğe oluşturmama izin veren işlevi arıyorum. javascript replace selection all browsers gibi buna benzer bir şey ancak seçimden önce ya da sonra değiştirmeden önce ya da sonra bazı içerik eklemek için, after()
ve before()
jQuery yöntemleri gibi. Bazı DOM seçim yöntemlerini kullanmalı mıyım? Yoksa bunu yürütmek daha kolay bir şey var mı?Metin seçiminden önce/sonra öğe ekle
6
A
cevap
10
Bunu yapmak için bir çift işlev var.
Canlı örnek: http://jsfiddle.net/hjfVw/
Kodu:
var insertHtmlBeforeSelection, insertHtmlAfterSelection;
(function() {
function createInserter(isBefore) {
return function(html) {
var sel, range, node;
if (window.getSelection) {
// IE9 and non-IE
sel = window.getSelection();
if (sel.getRangeAt && sel.rangeCount) {
range = window.getSelection().getRangeAt(0);
range.collapse(isBefore);
// Range.createContextualFragment() would be useful here but is
// non-standard and not supported in all browsers (IE9, for one)
var el = document.createElement("div");
el.innerHTML = html;
var frag = document.createDocumentFragment(), node, lastNode;
while ((node = el.firstChild)) {
lastNode = frag.appendChild(node);
}
range.insertNode(frag);
}
} else if (document.selection && document.selection.createRange) {
// IE < 9
range = document.selection.createRange();
range.collapse(isBefore);
range.pasteHTML(html);
}
}
}
insertHtmlBeforeSelection = createInserter(true);
insertHtmlAfterSelection = createInserter(false);
})();
2
: collapse verilen aralık ve elemanı
Diğer eklemek için kullanımı pasteHTML: Ayrıca collapse verilen aralığı ve insertNode
Hem ile eleman eklemek daraltma yöntemleri, daraltmak istediğiniz yere tanımlayan isteğe bağlı bir argümanı kabul eder. Öğeyi sonuna koymak isterseniz, aksi halde baştan sonuna kadar daraltın.
İlgili konular
- 1. Kotlin - ExpandableListView'e öğe ekle
- 2. DataBrow DropDownList'e öğe ekle
- 3. JavaScript: Öğe ekle öğesiNode
- 4. Dosyanın sonuna metin ekle
- 5. Metin dosyası ekle
- 6. UIImage'a Metin Ekle
- 7. Zengin Metin Kutusu'nda başlığa metin ekle
- 8. XML Şeması: Öğe veya metin içerebilen öğe?
- 9. HTML'de "----- metin ekle -----" nasıl yazılır?
- 10. Bash'ta stderr yönlendirmelerine metin ekle
- 11. Ace editörü - pozisyona metin ekle
- 12. JQuery geçerli sekmeye metin ekle
- 13. Mongoose veritabanına birden çok öğe ekle
- 14. Adblock. Css sınıfını ekle veya öğe
- 15. ruby dizisine öğe ekle new dizilimi döndür
- 16. C# Listeden öğe listesine ekle UserControl
- 17. Öğe seçerek metin ve özellik
- 18. Sonuçların iki seçiminden elde edilen sonuçlar
- 19. Tarih seçiminden sonra datetimepicker nasıl kapatılır?
- 20. Android - Spinner seçiminden sonra EditText odak ayarlamak
- 21. Metin haritasının içindeki ısı değiştirgesini ekle dc.js
- 22. Android - Düğmeye basıldığında zemine metin gösterimi ekle
- 23. Günlük dosyasına metin dosyası veri ekle, .bat
- 24. Raylar yardımcı metin alanına öznitelik ekle?
- 25. Css ile metin görüntünün soluna resim ekle
- 26. Linux'ta belirli bir satırdaki dosyaya metin ekle
- 27. Android'de bir metin kaynağına yeni hatlar ekle?
- 28. jquery kullanarak çoklu metin alanı ekle
- 29. Alt öğe üzerindeki metin süslemeyi geçersiz kılma
- 30. Düzenle veya Yeni öğe ekle listeden görünümü mvc
Sorumun cevabı değil ama: Ben kullanmakta oldukça kolay yapabilirsiniz bahis Tim Down [rangy] (http://code.google.com/p/rangy /) kütüphanesi. –