Javascript-форум (https://javascript.ru/forum/)
-   Firefox/Mozilla (https://javascript.ru/forum/css-html-firefox-mizilla/)
-   -   Выделение текста при использовании слайдера (https://javascript.ru/forum/css-html-firefox-mizilla/5222-vydelenie-teksta-pri-ispolzovanii-slajjdera.html)

x00xer 27.09.2009 21:42

Выделение текста при использовании слайдера
 
Здравствуйте.

Необходимо на сайт установить слайдер (ползунок), при перемещении ползунка выделяется близ лежащий текст, а при не аккуратном перемещении может выделиться и вся страница
полазив по сети нашел способ запретить выделять текст
$('body').select(function() { return false; });
способ решает проблему в ИЕ и Сафари.
Но вот мозилка не поддается .. как можно побороть мозилку ?
Спасибо.

Kolyaj 27.09.2009 22:25

Перехватывайте mousedown на ползунке и прерывайте его дальнейшее всплытие. Работать будет везде, без дополнительных телодвижений.

x00xer 28.09.2009 09:19

мне казалось я так и делаю ?
//drag and drop
            var slide = {
                drag: function(e) {
						// $('body').select(function() { return false; });
                    var d = e.data;
                    var l = Math.min(Math.max(e.pageX - d.pageX + d.left, ps.limited.min), ps.limited.max);

                    $sliderProcess(slider, completedbar, l);
                    //push two parameters: 1st:percentage, 2nd: event
                    ps.onChanging(l / ps.limited.max, e);

					// document.body.onselectstart = function() { return false }
                },
                drop: function(e) {
						// $('body').select(function() { return false; });	
                    slider.removeClass(ps.sliderHover);
                    //push two parameters: 1st:percentage, 2nd: event
                    ps.onChanged(parseInt(slider.css('left')) / ps.limited.max, e);

                    $().unbind('mousemove', slide.drag).unbind('mouseup', slide.drop);
                }
            };

            if (ps.enable) {
                //bind events
                slider.bind('mousedown', function(e) {
                    var d = {
                        left: parseInt(slider.css('left')),
                        pageX: e.pageX
                    };
	$('body').select(function() { return false; }); // ВОТ ТУТ!
                    $(this).addClass(ps.sliderHover);
                    $().bind('mousemove', d, slide.drag).bind('mouseup', d, slide.drop);
                });
            }

Kolyaj 28.09.2009 11:10

http://javascript.ru/tutorial/events...ovka-vsplytiya

Цитата:

Сообщение от x00xer
мне казалось я так и делаю ?

И отменять mousedown надо, а не select.

x00xer 28.09.2009 11:45

Странное дело
сделал как из туториала

slider.bind('mousedown', function(e) {
                    var d = {
                        left: parseInt(slider.css('left')),
                        pageX: e.pageX
                    };
					// $('body').select(function() { return false; });
					event = e || window.event // кросс-браузерно

				    if (event.stopPropagation) {
				        // Вариант стандарта W3C:
				        event.stopPropagation()
				    } else {
				        // Вариант Internet Explorer:
				        event.cancelBubble = true
				    }
                    $(this).addClass(ps.sliderHover);
                    $().bind('mousemove', d, slide.drag).bind('mouseup', d, slide.drop);
                });


Но все равно в мозилке не работает :(

Kolyaj 28.09.2009 11:55

ХЗ че там в этих ваших jquery'ях происходит. У меня на pure-js все работает.

x00xer 28.09.2009 22:31

похоже нашел что в JQ есть нечто вот такое
event.preventDefault();
что скорее всего приостаавливает всплытие :-) по крайне й мере то работает :-).
Спасибо.
Классный у Вас тут сайт, поселюсь вероятно я теперь у Вас :-)

Riim 29.09.2009 03:06

preventDefault

x00xer 29.09.2009 07:45

Я уже прочитал этот туториал. Теперь становится понятней


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