Javascript-форум (https://javascript.ru/forum/)
-   Events/DOM/Window (https://javascript.ru/forum/events/)
-   -   Пауза/продолжение выполнения скрипта по нажатию кнопки клавиатуры (https://javascript.ru/forum/events/69712-pauza-prodolzhenie-vypolneniya-skripta-po-nazhatiyu-knopki-klaviatury.html)

yandibilds 14.07.2017 03:50

Пауза/продолжение выполнения скрипта по нажатию кнопки клавиатуры
 
Доброго времени суток!
Уважаемые, просто прошу помочь готовым решением, признаюсь честно. JavaScript увидел вчера утром и вряд ли в ближайшее время он мне будет интересен. Мы вообще музыканты:dance: Что сделано можено взглянуть тут: http://meutesto.webutu.com/ (бесплатный хостинг с единственным index.html) То, как работает сейчас при отсутствии других решений нас устроит, но хотелось бы добить тему: хочется, чтобы по нажатию пробела (на самом деле и пробел нажиматься не будет - будут голосовые команды через связку Typle + Autohotkey) скролинг останавливался и запускался, так же, как сейчас через alert. Вот код того, что я наваял из разных источников (если лень будет смотреть по ссылке):
Код:

<!DOCTYPE html>
<html>
<head>
        <meta charset="utf-8" />
        <title>Пример №1 к статье "Скрипт для плавной прокрутки на низ страницы"</title>

<script>
var t;
function up() {
                if((window.innerHeight + window.pageYOffset) < document.documentElement.scrollHeight) {
                window.scrollBy(0,1);
                t = setTimeout('up()',20);}
                else clearTimeout(t);
                return false;
}

</script>

</head>

<body onkeydown="alert('Клик!')">

<a href="#" id="up" onclick="return up()">вниз</a><br>

<h1> .... </h1>

<p>......</p>

</div>

</body>
</html>

Можно ли сделать такой стоп/старт как-то более или менее просто или нужно писать что-то ужасное и сложное? Вобщем, помогите люди добрые!:help:

yandibilds 14.07.2017 16:18

Я сделяль: http://meutesto.webutu.com/
Типа, код:

<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8" />
<title>Старт и запуск скрипта JavaScript по "пробелу"</title>

<script type="text/javascript" src="https://ajax.googleapis.com/ajax/libs/jquery/1.6.1/jquery.min.js"></script>

<script>
var t;
var a = 0;
function up() {
		if((window.innerHeight + window.pageYOffset) < document.documentElement.scrollHeight) {
		window.scrollBy(0,3);
		t = setTimeout('up()',10);}
		else clearTimeout(t);
		return false;
}

function stop() {
		a++;
		if((a%2) > 0) {
			up();}
			else clearTimeout(t); return false;
}

</script>

<script type="text/javascript">
    $(window).keypress(function (e) {
		if (e.keyCode === 0 || e.keyCode === 32) {
		e.preventDefault(e);
		stop();}
	})
</script>

<style>
body {
	font: 15px/20px Arial, Tahoma, sans-serif;
	width: 700px;
    height: 1300px;
	margin: 30px auto;
}
h1 {
	font-size: 25px;
	font-weight: normal;
	line-height: 1.3;
	margin: 0 0 22px;
	text-align: center;
}
p {
	margin: 0 0 22px;
}
a {
	color: #0094D6;
}
</style>
</head>

<body>

<h1>Пример: скрипт для плавной прокрутки в низ страницы с остановкой и повторным запуском с места остановки по "пробелу"(JavaScript/jQuery)</h1>

</div>

</body>
</html>


Для чистоты эксперимента осталось только сделать так, чтобы сия конструкция работала исключительно по пробелу, так как сейчас всё это дело запускается буквами и цифирью также, но то такэ, интерес чисто академический :dance:

j0hnik 14.07.2017 16:43

e.keyCode === 32 это и есть пробел, так что все работает.

yandibilds 14.07.2017 17:17

Цитата:

Сообщение от j0hnik (Сообщение 458518)
e.keyCode === 32 это и есть пробел, так что все работает.

Если убрать
e.keyCode === 0 ||
, то не работает пробел (ничего не работает), точнее, он по дефолту прокручивает страницу, а так как сейчас запуск прокрутки осуществляет не только пробел, но и нажатие на любую букву или цифру.

рони 14.07.2017 19:54

yandibilds,
$(window).keypress(function (e) {
    if (e.which === 32) {
    e.preventDefault(e);
    stop();}
  })

рони 14.07.2017 19:57

yandibilds,
jquery/1.6.1 поставьте вначале новее версию например 1.12.4

yandibilds 14.07.2017 20:34

Цитата:

Сообщение от рони (Сообщение 458524)
yandibilds,
$(window).keypress(function (e) {
    if (e.which === 32) {
    e.preventDefault(e);
    stop();}
  })

Это просто праздник какой-то! Спасибо! :victory:
p.s. и версию сменил )


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