Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/377.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/linq/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 没有从连接的js捕获提交,在哪里挖掘?_Javascript - Fatal编程技术网

Javascript 没有从连接的js捕获提交,在哪里挖掘?

Javascript 没有从连接的js捕获提交,在哪里挖掘?,javascript,Javascript,任务:捕获页面上的表单触发。 有以下代码: $(document).ready(function () { $(document).on('submit','form',function(e){ alert('wtf?'); }) }) 在外部连接的js中,单击某个元素会触发以下内容的代码: h.redirect = function (a, b) { var c = k.createElement("form"); c.a

任务:捕获页面上的表单触发。 有以下代码:

$(document).ready(function () {
    $(document).on('submit','form',function(e){
          alert('wtf?');
     })
})
在外部连接的js中,单击某个元素会触发以下内容的代码:

h.redirect = function (a, b) {
        var c = k.createElement("form");
        c.action = b;
        c.method = "post";
        c.target = "_top";
        c.style.display = "none";
        var d = k.createElement("input");
        d.type = "hidden";
        d.name = "token";
        d.value = a;
        c.appendChild(d);
        k.body.appendChild(c);
        c.submit()
    }
注意问题:使用c.submit时,不会捕获任何内容,椰子不会生长,警报不会出现,但表单工作,提交发生。如何抓住一个事件,或者至少解释为什么会这样?c.submit不创建事件吗


UPD:谢谢大家,我是一只愚蠢的麋鹿,我没有正确地查看代码,或者在没有提交的情况下描述回调。

一般来说,第三方脚本允许自己自由使用,例如直接调用submit,或者它有多具体,这不是很酷。这种方法除了装饰外别无选择:

(() => {
    var old_submit = HTMLFormElement.prototype.submit;

    HTMLFormElement.prototype.submit = function() {
        var form = this,
            args = Array.prototype.slice.call(arguments),
            submit_event = new Event('submit', {
                bubbles: true,
                cancelable: true
            });

        submit_event.original_submit = function() {
            old_submit.apply(form, args);
        };

        form.dispatchEvent(submit_event);
    }
})();

$(() => {
    var my_form = $( 'form' )[0];

    $( document )
        .on('submit', 'form', function(e) {
            alert('wtf?');
            e.originalEvent.original_submit();
        })
        .on('click', 'button', function() {
            my_form.submit();
        });
})
关键是在调用提交时调用事件的对象,其中有一个指向原始提交的链接,这是发送表单的唯一方式。这是恐怖、噩梦和地狱,我永远也不会这么做,但我没有想到更好的办法。

为什么要在文档中添加“提交”,而不是在表单元素中添加?另外,永远不要使用警报,它只能在线程阻塞对话框弹出窗口中记录字符串。使用console.log,它可以以一种很好的探索方式记录任何内容。