2013-09-03 2 views
0

Там много фрагментов, чтобы остановить резиновое-полосатость на IPad, как показано ниже:В Safari на iPad есть способ остановить резинку страницы, но все же разрешить переполнения слишком прокрутки?

document.body.addEventListener('touchmove',function(event){ event.preventDefault(); },false); 

Однако это имеет нежелательный эффект предотвращения всех дивы с переполнением на них от прокрутки тоже?

Есть ли способ просто перевернуть страницу (тело) от резиновой ленты, сохраняя при этом разрешенные прокрученные divs?

ответ

1

Резиновая лента всей страницы, похоже, происходит, когда пользователь прокручивается с самого низа или на самый верх div. Код, который я написал, проверяет, действительно ли пользователь находится в одной из этих крайностей, и если это так предотвращает действие прокрутки в этих направлениях.

elem.bind("touchstart", function(e) 
{ 
    xStart = e.originalEvent.changedTouches[0].screenX; 
    yStart = e.originalEvent.changedTouches[0].screenY; 
}); 

elem.bind("touchmove", function(e) 
{ 
    var xMovement = e.originalEvent.changedTouches[0].screenX - xStart; 
    var yMovement = e.originalEvent.changedTouches[0].screenY - yStart; 

    if(elem.scrollTop() == (elem[0].scrollHeight - elem[0].clientHeight) && yMovement < 0) 
    { 
     e.preventDefault(); 
    } 
    else if(elem.scrollTop() == 0 && yMovement > 0) 
    { 
     e.preventDefault(); 
    } 
    e.stopPropagation(); 
}); 

Update: в том числе рабочей jsfiddle демо ссылка: http://jsfiddle.net/qQHrM/1/

+0

Это не работает. :/ – Smickie

+1

Это смешно ... отлично работает для меня. Возможно, я неправильно понял ваш вопрос. Вот демонстрация рабочей скрипки. http://jsfiddle.net/qQHrM/1/ На моем ipad я могу прокрутить div, но если я дойду до одного из концов, страница не будет резинкой. –

 Смежные вопросы

  • Нет связанных вопросов^_^