Тема: Selection / Range
Показать сообщение отдельно
  #1 (permalink)  
Старый 11.04.2012, 17:27
Профессор
Посмотреть профиль Найти все сообщения от Антон Крамолов
 
Регистрация: 11.04.2012
Сообщений: 255

Selection / Range
function extend(obj, hash) {      
                for (var k in hash) {
                    if (hash.hasOwnProperty(k)) {
                        obj[k] = hash[k];
                    }
                }
            }
    
            function clone(obj) {
                return extend({}, obj);
            }
            
            function create(tag, props) {
                var el = document.createElement(tag);
                extend(el, props);
                return el;
            }
            
            document.onmouseup = function() {              
                var sel = window.getSelection();
                var txt = sel.toString();
                if (txt.trim()) {
                    var rng = sel.getRangeAt(0);                 
                    var el = create('strong', {innerHTML: txt});
                    rng.deleteContents();
                    rng.insertNode(el);                  
                    rng.selectNode(el);
                }
            }


Выделяешь текст, отпускаешь ЛКМ, текст становится жирным. Но! В браузере Opera выделяется не тот текст, в FF работает всё как надо, в Chrome ничего не выделяется вообще. Как сделать чтобы работало в этих трёх браузерах?

Живой пример
Ответить с цитированием