Выбранный текст Chrome - PullRequest
       1

Выбранный текст Chrome

0 голосов
/ 27 июня 2010

Что я на самом деле хочу сделать, так это получить выделенный текст при нажатии кнопки.Он отлично работает в IE и Firefox с кодом, который я использую, но переменная selectedText пуста в Chrome и Safari.Я не знаю, что с ними делать, какая-нибудь помощь?Код, который я использую:

$('.a-button').click(function() {
    $('.bubble').hide();

    if($.browser.msie) {
        var select = window.document.selection.createRange();
        var parents = $(select.parentElement()).parents('.the-content');
    } else {
        var select = window.getSelection();
        var parents = $(select.focusNode).parents('.the-content');
    }

    var newLen = $('.new').length + 1;

    if(parents.length >= 1) {
        if($.browser.msie) {
            if($(select.parentElement()).hasClass('.an')) {
                alert('This text is already annotated.');
            } else {
                select.pasteHTML('<span class="newAnnotation" id="newAnno_'+newLen+'">' + select.htmlText + '</span>');
            }

            var selectedText = select.text;
        } else {
            if($(select.focusNode).parent().hasClass('.annotation')) {
                alert('This text is already annotated.');
            } else {
                for(var i = 0; i < select.rangeCount; i++) {
                    var range = select.getRangeAt(i); 
                    range.surroundContents($('<span class="newAnnotation" id="newAnno_'+newLen+'"></span>').get(0));
                }
            }

            var selectedText = select.toString();
        }

        alert(selectedText);

        var currentPosition = $('#newAnno_'+newLen).position();

        $('#bubble').css('position', 'absolute');
        $('#bubble').css('left', currentPosition.left);
        $('#bubble').css('top', currentPosition.top+40);

        $('#container').empty();
        $('#container').html('<img src="'+ANNOVars.pluginUrl+'/public/images/ajax-loader.gif" alt="Loading" />');

        $('#bubble').show();

        $.post(
            ANNOVars.ajaxUrl,
            {action: 'newAnnotation', postID: vars.postID, selectText: selectedText},
            function(data) {
                if(data !== 'empty') {
                    $('#container').html(data);
                    $('#bubble').show();
                } else {
                    $('#bubble').hide();
                }
            }
        );
    } else {
        alert('You cannot annotate this text.');
    }

    return false;
});

1 Ответ

0 голосов
/ 28 июня 2010

Вот функция, которую я использую в расширении Chrome:

    _getSelection: function() {
            var w = window,d = document, s = '', u;

            if (w.getSelection != u) { s = w.getSelection();}
            else if (d.getSelection != u) { s = d.getSelection(); }
            else if (d.selection) { s = d.selection.createRange().text; }
            else { return ''; }

            /* other extension-related stuff.. */  

            s = String(s).trim();
            return escape(s);
    },
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...