拦截Chrome内容扩展程序中的表单提交

时间:2011-12-12 05:46:07

标签: javascript google-chrome-extension

我想拦截在特定网站上提交表单。表单没有ID,但它有一个名称。我不想使用jQuery,因为我的扩展非常轻,并且没有依赖性。表单不是通过按钮提交的,而是通过submit()方法提交的。

我以为我可以处理onSubmit事件,但它似乎没有被提升。

现在我很难过,有什么想法吗?

2 个答案:

答案 0 :(得分:4)

您可以使用

抓住您的表单

var myForm = document.getElementsByName('myForm');

返回nodeList(类似于Array)。然后,您可以通过两种方式覆盖submit事件:

myForm.onsubmit = function (evt) {...};

myForm.addEventListener('submit', function (evt) {...});

小心只对事件名称使用小写字母。使用第二个示例,您可以将多个侦听器绑定到事件,但旧版浏览器不支持它(< IE 9)。

示例:

HTML:

<form name="myForm" action="#" method="post">
    <input type="submit" value="Send">
</form>

JS:

var myForm;

myForm = document.getElementsByName('myForm')[0];

myForm.onsubmit = function (evt) {
    // Do things here before passing on or stop the submit
};

答案 1 :(得分:0)

在我的content.html中:

var patch = document.createElement('script');  
patch.src= chrome.extension.getURL('patch.js')
document.body.appendChild(patch);

document.forms['logoutForm'].onsubmit = function() {
        chrome.extension.sendRequest({logout: true});
}

在patch.js中:

document.logoutForm.submitOrig = document.logoutForm.submit;

document.logoutForm.submit = function() {

    this.onsubmit();

    this.submitOrig();

};