Javascript HTML JS注入表单提交

Javascript HTML JS注入表单提交,javascript,html,forms,addeventlistener,event-listener,Javascript,Html,Forms,Addeventlistener,Event Listener,我有一个应用程序,它为提交注入了一个html事件监听器。我们想做一点验证,然后调用原始提交。出于某种原因,我们一直使用以下方法在递归调用中调用interceptorevt。想法 // SUBMIT OVERRIDES HTMLFormElement.prototype._submit = HTMLFormElement.prototype.submit; HTMLFormElement.prototype.submit = interceptor; console.l

我有一个应用程序,它为提交注入了一个html事件监听器。我们想做一点验证,然后调用原始提交。出于某种原因,我们一直使用以下方法在递归调用中调用interceptorevt。想法

 // SUBMIT OVERRIDES

    HTMLFormElement.prototype._submit = HTMLFormElement.prototype.submit;
    HTMLFormElement.prototype.submit = interceptor;
    console.log("AddEventListener SUBMIT override");
    window.addEventListener('submit', function submit_el(e) {
        console.log("PK submit calling JS interceptor");
        e.preventDefault();
        interceptor(e);
    }, false);

function interceptor(evt) {
        frm = evt ? evt.target : this;
        if (!frm.onsubmit || (frm.onsubmit() !== false)) { 
            // DO SOME STUFF....
            console.log("Calling the real form submit which should not call the listener");            
            frm._submit(); //form submission
            console.log("Calling the real form submit - COMPLETED");
        }
        return false;
    }

您总是在取消事件,当您调用原始onsubmit函数时,您也会启动事件侦听器,并执行与第一次相同的操作,尝试移动e.preventDefault;返回前为假;内部拦截器功能


您还可以设置一个标志,指示是否应运行原始onsubmit函数或是否应取消事件

尝试移动e.preventDefault;在返回false之前调用e.preventDefault不是在调用interceptore之前调用它吗?我不知道这个建议是什么。我试着说e.preventDefault不应该在interceptore之前被调用,应该被称为insideso为什么这样做?对拦截器的调用是同步的。为什么在返回错误之前在拦截器内部调用它会起作用?