gpt4 book ai didi

javascript - 没有捕获来自连接js的提交,在哪里挖掘?

转载 作者:行者123 更新时间:2023-12-02 23:21:48 25 4
gpt4 key购买 nike

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

$(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:谢谢大家,我是个笨麋鹿,没有好好看代码,或者哪里描述了回调而没有提交。

最佳答案

一般来说,第三方脚本允许自己有这样的自由,例如直接调用提交,或者它可以有多具体,这并不是很酷。这种方法别无选择,只能进行装饰:

(() => {
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();
});
})

重点是在调用提交时调出事件的对象,其中有一个指向原始提交的链接,这是发送表单的唯一方法。这是恐怖、噩梦和 hell ,我永远不会那样做,但我也没有想到更好的事情。

关于javascript - 没有捕获来自连接js的提交,在哪里挖掘?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56918733/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com