如何从Chrome扩展程序中捕获提交操作

时间:2011-11-15 12:34:12

标签: javascript google-chrome-extension

我必须编写一个扩展名来保存用户凭据到我的数据库服务器(就像在LastPass中一样)。如何从活动选项卡上的身份验证表单中捕获提交操作,以获取输入的登录名和密码,以便使用我的扩展名保存并向用户显示对话框,如果他想要保存凭据?

1 个答案:

答案 0 :(得分:1)

在清单中添加内容脚本并将其设置为在某个网页上运行:

"content_scripts": [{
    "matches": ["http://*.example.com/*"],
    "js": ["form_submits.js"],
    "run_at": "document_start"
}]

还添加权限:

"permissions": [
    "tabs", "http://*.example.com/*"
],

在此内容脚本中,在表单上收听“onsubmit”事件,然后使用chrome.extension.sendRequest()与您的扩展程序联系:

for (var i = 0; i < document.forms.length; i++) {
    document.forms[i].addEventListener("submit", function(){
        var form = this.form;
        var data = [form.elements["user"], form.elements["password"]];
        // contact with your background page and send the form data.
        chrome.extension.sendRequest({'name':'form_submit', 'data':data}, function(){ /* my callback if needed */ }, false);
}

在后台脚本中添加侦听器:

chrome.runtime.onMessage.addListener(function(request, sender, callback) {
    switch (request.name) {
         case 'form_submit':
             var data = request.data;
             // do something with your form credentials.
             break;
     }
});

****编辑。****

您还可以直接在当前活动的Tab上执行JavaScript并添加表单提交侦听器:

首先获取当前窗口和活动标签:

chrome.windows.getCurrent(function callback)
chrome.tabs.getSelected(integer windowId, function callback)

http://code.google.com/chrome/extensions/windows.html#method-getCurrent

http://code.google.com/chrome/extensions/tabs.html#method-getSelected

然后在其中执行JavaScript:

chrome.tabs.executeScript(integer tabId, object details, function callback)

http://code.google.com/chrome/extensions/tabs.html#method-executeScript

全面的Google Chrome扩展程序API位于:

http://code.google.com/chrome/extensions/getstarted.html