Столкнулся с проблемой (не ожидаемым поведением) в ФФ, когда определенный код выполнялся после form.submit()
, хотя казалось, что этого не должно быть... При чем в Хроме все работало ожидаемо.
Набросал код-иммитацию:
const form = document.getElementById('send')
form.addEventListener('submit', ()=>{
console.log("Hi, from submit")
})
setTimeout(function() {
form.submit();
setTimeout(function(){
console.log(123)
},0)
}, 1000)
<form action="" id="send">
<input type="text" name="firstname" id="">
<button type="submit">Click</button>
</form>
По идее, console.log(123)
мы не должны увидеть, однако видим. Получается, что submit
асинхронен?
П.С.: в реальности ситуация была такова (выдержка из кода):
//отправка данных формы, после валидации
form.submit()
//идет перебор элементов формы, в котором эти элементы дизейблятся
elements.forEach(elm => {
elm.readOnly = true
elm.disabled = true
})
В ФФ проблема возникла в том, что на сервер значения инпутов приходили пустыми. Проблема исчезла, когда была удалена строка elm.disabled = true
. Это говорит о том, что полям формы успевал применится атрибут disabled
и, соответственно, значения не передавались на сервер.
Страница существует, и js в ней выполняется, пока в браузер не придет первый байт ответа на сабмит.
Виртуальный выделенный сервер (VDS) становится отличным выбором
На страничке необходимо загрузить в input type file, а так же вывести эту картинку в imgА далее ajax запросом передать base64 строку на сервер и там перевести...
Нужно в аяксе после успешного ответа от сервера показывать кнопку для сохранения приложения на рабочий столСделал динамический манифест...