Представьте, что у вас есть следующий html-сайт:
<div id="body">
<div>
<form id="form">...</form>
<div>Foo</div>
</div>
</div>
Отправка формы приводит к извлечению html-контента с локального хоста через XMLHttpRequest
и замене body
на это содержимое:
<div>
<form id="form">...</form>
<div>Bar</div>
</div>
Образец JS:
var xhr = new XMLHttpRequest();
var form = document.getElementById("form");
xhr.addEventListener("load", function () {
document.getElementById("body").innerHTML = xhr.responseText;
});
form.addEventListener("submit", e => {
e.preventDefault();
var formData = new FormData(form);
xhr.open('POST', 'http://localhost/update');
xhr.send(formData);
form.reset();
}, false);
В этом случае первая отправка будет работать как ожидалось.Но после первой отправки EventListener больше не работает, поскольку он не привязан к текущему DOM-элементу.
Какой лучший способ получить постоянный EventListener?