Страница должна быть обработана до вызова подсказки. В текущей реализации prompt(...)
прерывает манипуляции с DOM, а hint
отображается только после того, как пользователь нажимает OK в окне подсказки.
Хотя el.innerHTML = 'Please, reply to prompt';
вызывается перед var res = prompt('Hello world');
, элемент HTML с id='hint'
не будет обновляться, пока пользователь не нажмет OK в окне подсказки.
<!DOCTYPE html>
<script type="text/javascript">
function callNativeApp() {
console.log('callNativeApp called');
try {
// Show hint message
var el = document.getElementById('hint');
el.innerHTML = 'Please, reply to prompt';
// Call prompt
var res = prompt('Hello world');
// Write result of prompt reply to html
document.getElementById('prompt-call-output').innerHTML = res;
} catch(err) {
console.log('The native context does not exist yet');
}
}
</script>
<html>
<head>
</head>
<body>
<button onclick="callNativeApp()">Call native app</button>
<p id="hint"></p>
<p id="prompt-call-output"></p>
</body>
</html>
Как изменить текущий код, чтобы сначала отображалась страница. И только после этого вызывается подсказка ()? Например, каким-то образом заставить дерево DOM обновляться (refre sh) перед вызовом подсказки?
Решение с тайм-аутом для вызова var res = prompt('Hello world');
, например,
setTimeout(function() {
var res = prompt('Hello world');
document.getElementById('prompt-call-output').innerHTML = res;
}, 100);
, не применимо, поскольку наша текущая кодовая база зависит от последовательности команд, которые идут после вызова prompt(...)
.
Экран, который показывает, что hint
не отображается при вызове подсказки, даже если настройка текстовой подсказки вызывается перед вызовом подсказки: ![enter image description here](https://i.stack.imgur.com/nac55.png)
И hint
отображается, только когда окно подсказки закрыто:
![enter image description here](https://i.stack.imgur.com/PfsB9.png)