Более высокий приоритет окна диалогов, чем элементов DOM

#javascript #html

Вопрос:

У меня странная проблема с отображением элементов на странице в хорошем порядке. Я хочу показать в начале document.write с приветствием, затем попросить имя prompt и в конце показать результат на странице. Каким-то образом, прежде чем что-либо появится, отображается приглашение. Почему это происходит? Это для школьных целей 🙂

 document.write(`Hello `); const text = prompt(`what's your name?`); document.write(`${text}, nice to meet you :)`); 

Если что-то непонятно, не стесняйтесь спрашивать 🙂

Комментарии:

1. После написания «Привет» отображается приглашение, что работает не так, как вы ожидаете?

2. Остерегайтесь «Привет, нуль, приятно познакомиться».

3. @php_nub_qq только когда вы используете mozilla в качестве браузера, повторите попытку, но в chrome 🙂

4. Вы не получите этого из-за того, как браузер отображает контент. И скоро вы узнаете, что document.write-плохое решение.

5. Как я уже сказал, это только для школьных целей, мы делаем упражнения, и нам интересно, сможем ли мы это как-то сделать

Ответ №1:

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

Это выходит за document.write рамки того , что если вы попытаетесь добавить элемент в документ, вы будете наблюдать точно такое же поведение.

Я попытался заставить chrome выполнять рендеринг между write/append вызовами, но он решительно отказался. Я предполагаю, что это какая-то предполагаемая оптимизация с их стороны, не уверен, но если вы действительно настаиваете на этом, вам придется использовать дополнительный контекст, и это не будет работать document.write , так как он перезапишет все, что уже есть в документе.