(function () { const submitBtnSelector = "button[type='submit'], input[type='submit']"; window.addEventListener('load', (event) => { document.querySelectorAll(submitBtnSelector).forEach(i => { i.addEventListener("click", (event) => { event.preventDefault(); const btn = event.target; if (btn.getAttribute('disabled') === 'disabled') return; btn.setAttribute('disabled', 'disabled'); setAntiforgeryTokens().then(() => { const form = btn.closest('form'); form.requestSubmit(btn); btn.removeAttribute('disabled'); }, err => { console.log('Antiforgery token retrieval failed: ' + err); btn.removeAttribute('disabled'); }); }, false); }); }); function setAntiforgeryTokens() { return new Promise((resolve, reject) => { const service = document.querySelector("input[name='antiCsrfService'").value; const headerName = document.querySelector("input[name='antiCsrfCustomHeaderName'").value; let xhr = new XMLHttpRequest(); xhr.open('GET', service); xhr.setRequestHeader(headerName, 'true') xhr.responseType = 'json'; xhr.onload = function () { const response = xhr.response; if (response != null) { const token = response.Value; document.querySelectorAll("input[name='sf_antiforgery']").forEach(i => i.value = token); resolve(); } else { reject(); } }; xhr.onerror = function () { reject(); }; xhr.send(); }); } })();