2011-12-13 53 views
2

我写一个Chrome扩展,我想所有呼叫拦截到一个表单的提交方式,并有选择地允许/禁止它们。拦截提交()调用形式

这似乎是点击一个表单的提交按钮时表单onsubmit事件仅触发,而不是当提交()被调用。所以这不会有帮助。

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

+3

'window.HTMLFormElement.prototype.oldsubmit = window.HTMLFormElement.prototype.submit; window.HTMLFormElement.prototype.submit = function(){//你的代码。如果允许:this.oldsubmit()}' – ampersand

+0

为什么不看看jQuery的源代码来看看他们如何捕获提交操作? – JesseBuesking

回答

1

我不知道改变的原型,但你绝对可以覆盖的形式对象本身提交功能(这经常发生,当设计师决定给提交按钮的名称=“提交”属性没有明显原因) 。

所以,你可以只是做一个节点查询找到所有的表格,并更换每个人的财产提出用自己的包装功能。

1

Chrome的沙盒防止这种工作。如果您通过内容脚本执行此操作,该页面仍然会看到原始的submit()方法。

+0

请参阅下面的答案 – NoPyGod

0
document.someform.submitOrig = document.someform.submit; 

document.someform.submit = function() { 

     this.onsubmit(); 

     this.submitOrig(); 

}; 

这工作,感谢GGG