Я хочу создать интерфейс, который имитирует интерактивную консоль javascript, где пользователи могут печатать ввод непосредственно на самой странице. Проблема связана с вводом: когда пользователь запрашивает ввод, JS необходимо приостановить выполнение до тех пор, пока не будет нажата кнопка «Ввод», чтобы ввод можно было собрать и отправить для продолжения.
Цель состоит в том, чтобы научить очень простому javascript, как можно было бы научить, скажем, Python, где функция input()
блокирует дальнейшее выполнение. Я знаю, что это достижимо с обратными вызовами в JS, но я пытаюсь сделать это как можно более удобным для начинающих.
Возможно ли это с помощью Javascript? Я также знаю, что здесь сработает prompt()
, но я хочу посмотреть, есть ли более визуально привлекательный способ сделать это.
Вот код, который у меня есть, на случай, если он даст лучшее представление о том, что я пытаюсь сделать:
let $go;
const $input = document.querySelector('input');
const $button = document.querySelector('button');
const $output = document.querySelector('code');
function block() {
if (!$go) {
console.log('continuing blocking');
setTimeout(block, 1000);
}
}
function output(msg) {
$output.innerHTML += msg;
}
function input(msg) {
console.log('waiting for input');
$input.placeholder = msg;
$go = false;
block();
console.log('returning');
return $input.value;
}
$button.addEventListener('click', function(){
$go = true;
console.log('clicked')
});