Javascript-форум (https://javascript.ru/forum/)
-   Общие вопросы Javascript (https://javascript.ru/forum/misc/)
-   -   Запрет скроллинга страницы (https://javascript.ru/forum/misc/21561-zapret-skrollinga-stranicy.html)

nematod 15.09.2011 11:32

Запрет скроллинга страницы
 
И снова здрасте!:)

Подскажите как запретить скролл?
Код:

.scroll{
postiton: fixed;
overflow:hidden;
}

Такой код не подходит, потому что он скрывает скролл, и страница прыгает вправо. Нужно чтобы скролл оставался, но не прокручивался.

Подскажите хоть в каком направлении мыслю мыслить.

Octane 15.09.2011 11:44

выполнять preventDefault для событий DOMMouseScroll и mousewheel

nematod 15.09.2011 12:23

Хорошая идея спасибо.
Было бы не плохо примерчик какой-никакой))

nematod 15.09.2011 13:20

Ну помогите ж вы необразованному человеку.
Как это выглядеть должно?
window.onmousewheel.preventDefault();
window.DOMMouseScroll.preventDefault();

Написал вот-так, и естественно нифига не работает.
Блин, никак не могу освоить этот жабаскрипт((((

Magneto 15.09.2011 13:23

document.onmousewheel = function (e) {
  e.preventDefault();
}

nematod 15.09.2011 13:30

Спасибо, помогло :thanks:
Что бы я без вас делал? )))

monolithed 15.09.2011 13:55

Eсли очень грубо, то смысл такой:
var prevent = function(event) {
	window.scrollTo(0, 0);
	event ? event.preventDefault() : window.event.returnValue = false;
};

if(window.addEventListener) {
	var array = ['DOMMouseScroll', 'mousewheel', 'scroll'],
		i = array.length;

	while(i--) {
		window.addEventListener(array[i], prevent, false);
	}
}
else window.onmousewheel = document.onmousewheel = window.onscroll = prevent;

nematod 15.09.2011 20:47

monolithed твой код постоянно скроллит страницу вверх, это не годится. Задача только запретить скроллинг. Код Magneto лучше справляется с этой задачей, только вопрос все браузеры будут адекватно реагировать на этот код?)


И ещё, всё это здорово конечно, но как теперь всё вернуть на место? :)

nematod 16.09.2011 15:56

Люди, ауу...
Вопрос по теме! Как отменить действие вот этого скрипта:
document.onmousewheel = function (e) { 
  e.preventDefault(); 
}

dmitriymar 16.09.2011 17:08

удалить обработчик

nematod 16.09.2011 17:39

dmitriymar, логично)) А как это выглядит в жабаскрипте?

melky 16.09.2011 17:54

monolithed установил так :

var prevent = function(event) {
	window.scrollTo(0, 0);
	event ? event.preventDefault() : window.event.returnValue = false;
};

if(window.addEventListener) {
	var array = ['DOMMouseScroll', 'mousewheel', 'scroll'],
		i = array.length;

	while(i--) {
		window.addEventListener(array[i], prevent, false);
	}
}
else window.onmousewheel = document.onmousewheel = window.onscroll = prevent;



удалить можно так

// функция prevent никуда не делась.

if(window.addEventListener) {
	var array = ['DOMMouseScroll', 'mousewheel', 'scroll'],
		i = array.length;

	while(i--) {
		window.removeEventListener(array[i], prevent, false);
	}
}
else window.onmousewheel = document.onmousewheel = window.onscroll = null;


PS на основе кода monolithed


Цитата:

Сообщение от nematod (Сообщение 126778)
dmitriymar, логично)) А как это выглядит в жабаскрипте?

:-/ жопой об косяк

nematod 16.09.2011 19:05

melky, этот скрипт замораживает скролл только когда он находится в верхнем положении, если он прокручен вниз, страницу можно скроллить вверх.. :(

nematod 16.09.2011 19:14

Разобрался, внёс небольшую поправочку и скролл начал замерзать. Вот код:
var prevent = function(event){
	var h = document.documentElement.scrollTop;
	window.scrollTo(0, h);
	event ? event.preventDefault() : window.event.returnValue = false;
};
if(window.addEventListener){
	var array = ['DOMMouseScroll', 'mousewheel', 'scroll'],
	i = array.length;
	while(i--){
		window.addEventListener(array[i], prevent, false);
	}
}
else window.onmousewheel = document.onmousewheel = window.onscroll = prevent;



Но основной вопрос остался без ответа.
Скроллинг не начинает двигатся...((((

nematod 16.09.2011 21:02

Блин, ну помогите кто-нибудь.
Вот эта чатсть кода работает только в IE, а в Oper-е не работает:
if(window.addEventListener) {
var array = ['DOMMouseScroll', 'mousewheel', 'scroll'],
i = array.length;
 
while(i--) {
window.removeEventListener(array[i], prevent, false);
}
}
else window.onmousewheel = document.onmousewheel = window.onscroll = null;


Как восстановить функцию скроллинга???

.


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