Javascript 拦截表单上的submit()调用

Javascript 拦截表单上的submit()调用,javascript,google-chrome-extension,Javascript,Google Chrome Extension,我正在编写一个chrome扩展,我想拦截对表单提交方法的所有调用,并有选择地允许/不允许它们 似乎只有在单击表单的submit按钮时才会触发form onsubmit事件,而不是在调用submit()时。所以这不会有什么帮助 我在想我可以使用表单的原型来破解我自己的提交方法,这可能吗?我不知道如何修改原型,但你肯定可以覆盖表单对象本身的提交功能(当设计师决定在没有明显原因的情况下给提交按钮一个name=“submit”属性时,这种情况经常发生) 因此,您可以执行一个节点查询来查找所有表单,并用自

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

似乎只有在单击表单的submit按钮时才会触发form onsubmit事件,而不是在调用submit()时。所以这不会有什么帮助


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

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


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

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


感谢GGG

window.HTMLFormElement.prototype.oldsubmit=window.HTMLFormElement.prototype.submit;window.HTMLFormElement.prototype.submit=function(){//您的代码。如果允许:this.oldsubmit()}
为什么不看看jQuery的源代码,看看它们是如何捕获提交操作的?
document.someform.submitOrig = document.someform.submit;

document.someform.submit = function() {

        this.onsubmit();

        this.submitOrig();

};