Dim@,
а кто не позволяет считать keycode и вернуть браузеру false?
Окончательно вариант решения такой:
CSS:
html,body {overflow-y:hidden}
javascript
:
document.body.onkeydown = function(e){
e = e || window.event;
var c = e.keyCode;
//Убирает эвент на стрелках, на pageDown, PageUp, Home, End
if(c>36 && c<41 || c>32 && c<37) return false;
}
Конечно же, если зажать клавишу, то все таки проскачет, это нормально.
Насчет телефонов я думаю не особо будет замудоны с эффектами, дабы у них еще не выросла такая поддержка как у браузеров на ПК.