拦截表单上的submit()调用

Intercept submit() calls on a form

本文关键字:调用 submit 表单      更新时间:2023-09-26

我正在写一个chrome扩展,我想拦截所有调用到一个表单的提交方法,并有选择地允许/不允许他们。

看起来表单onsubmit事件只在表单的submit按钮被点击时触发,而不是在submit()被调用时触发。所以这没有用。

我想我可以使用表单的原型来破解我自己的提交方法在那里,这是可能的吗?

我不知道如何修改原型,但你绝对可以覆盖表单对象本身的提交函数(这种情况经常发生,当设计师决定给提交按钮一个name="submit"属性,没有明显的原因)。

因此,您可以执行节点查询来查找所有表单,并用您自己的包装器函数替换每个表单的submit属性。

Chrome的沙箱阻止这种工作。如果从内容脚本执行此操作,页面仍将看到原始的submit()方法。

document.someform.submitOrig = document.someform.submit;
document.someform.submit = function() {
        this.onsubmit();
        this.submitOrig();
};

这个工作,感谢GGG