Javascript-форум (https://javascript.ru/forum/)
-   Events/DOM/Window (https://javascript.ru/forum/events/)
-   -   Некорректно обрабатывает выделение (https://javascript.ru/forum/events/38486-nekorrektno-obrabatyvaet-vydelenie.html)

alex55 03.06.2013 23:38

Некорректно обрабатывает выделение
 
Я пишу плагин к хрому. этот код при выделении текста вываливает алерт и дальше делает то что нужно. но: срабатывает он не на всех сайтах (с манифестом проблем нет) и в вокруг текста появляется рамка - вот когда в ней выделаю , тогда все срабатывает. такая рамка очень не на многих сайтах появляеся. мне нужно чтобы при выделении любого текста в любом месте страницы код срабатывал.

jQuery(function($) {

    var $txt = '';
     
    $('.content').bind("mouseup", function(e){
        if (window.getSelection){
            $txt = window.getSelection(); 
        }
        else if (document.getSelection){
            $txt = document.getSelection(); a
        }
        else if (document.selection){
            $txt = document.selection.createRange().text; 
        }
        else return;
        if    ($txt!=''){
          alert($txt);  $('#popUpBox').css({'display':'block', 'left':e.pageX-60+'px', 'top':e.pageY+5+'px'});
        }
    });
     
    $(document).bind("mousedown", function(){
        $('#popUpBox').css({'display':'none'});
    });
     
    $('#popUpBox').bind("mousedown", function(){
        $('#replytext').val($txt);
    });
     
});


внедряется он так
Код:


$.get(chrome.extension.getURL('/injection.js'),
    function(data) {
        var script = document.createElement("script");
        script.setAttribute("type", "text/javascript");
        script.innerHTML = data;
 
      document.getElementsByTagName("head")[0].appendChild(script);
      document.getElementsByTagName("body")[0].setAttribute("onLoad", "injected_main();");
    }
);


zilker 05.06.2013 17:25

Цитата:

Сообщение от alex55 (Сообщение 254357)
вокруг текста появляется рамка - вот когда в ней выделаю , тогда все срабатывает.

Вы обрабатываете событие на элементе $('.content'), который судя по всему находится в $('#popUpBox').
Хотите на всём документе - так и вешайте событие на документ.

alex55 06.06.2013 15:35

спасибо! повесил обработчик на document. и все ок теперь почти. но на некоторых сайтах это не работает. к примеру на вконтакте рамка пустая вверху появляется и выделение не работает... и на ютубе тоже. на остальных сайтах вроде пашет. в чем может быть проблема?


Часовой пояс GMT +3, время: 17:23.