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,它可以以一种很好的探索方式记录任何内容。