我正在创建Chrome扩展程序,以自动将用户登录到特定wifi网络上的强制网络门户。当我提交登录表单时,它会重定向到另一个网站。当我提交表单时,我希望内容脚本通过向后台页面发送消息来关闭选项卡来关闭选项卡。无论我做什么,我都无法回复form.submit()
。我尝试了以下方法让它发挥作用:
使用常规javascript:
getSavedUserInformation((username,password) => {
form = document.forms['user_auth_form'];
form.fw_password.value = password;
form.fw_username.value = username;
form.fw_domain.value = 'REDACTEDFORPRIVACY.org';
form.action.value = 'fw_logon';
form.fw_logon_type.value = 'logon';
form.lang.value = 'en-US';
document.createElement('form').submit.call(form,function(){
console.log("callback worked");
chrome.runtime.sendMessage({action: "closeTab"});
});
});
使用JQuery:
getSavedUserInformation((username,password) => {
form = document.forms['user_auth_form'];
form.fw_password.value = password;
form.fw_username.value = username;
form.fw_domain.value = 'REDACTEDFORPRIVACY.org';
form.action.value = 'fw_logon';
form.fw_logon_type.value = 'logon';
form.lang.value = 'en-US';
$("#hsFormId").bind('ajax:complete', function() {
console.log("callback worked");
chrome.runtime.sendMessage({action: "closeTab"});
});
document.createElement('form').submit.call(form);
});
`
另外,我不能以正常的方式使用form.submit()函数,因为表单有一个名为"提交"的按钮,从而覆盖了submit()函数。这就是我采用document.createElement('form').submit.call(form);
方式的原因。
window.onunload = function(){
chrome.runtime.sendMessage({action: "closeTab"});
};