0
我正在实现一个密码管理器,如chrome扩展,它检测密码字段并尝试拦截提交函数。我想要的是:从提交表单中禁用提交输入jquery
- 用户点击“登录”在一个网站(说Facebook)。扩展内容脚本检测到密码和用户名的值
- 询问用户是否希望将登录凭证存储在管理器中
- 如果是,则存储凭证。
问题是在步骤2中,我试图阻止它提交,直到对话框返回用户操作,就像任何其他浏览器内置的密码管理器一样。但显然,preventDefault()不起作用,因为网页不断刷新就像调用curSubmit [0] .click()一样,这会使对话不断重现。
有什么想法是错的?我的代码部分是:
var inputs = document.getElementsByTagName("input");
for (var i=0; i<inputs.length; i++) {
if (inputs[i].type.toLowerCase() === "password") {
var curSubmit = $("input[type=submit]",inputs[i].closest('form'));
curSubmit[0].click(function(event){
event.preventDefault();
});
curSubmit[0].onclick = function(){
$('body').append('<div id="store-dialog" title="Store password?"><p>Do you want to store the login credentials?</p></div>');
var buttons = $(".store-dialog").dialog("option", "buttons");
$("#store-dialog").dialog({
resizable: false,
height: "auto",
position: { my: "center", at: "center", of: window },
modal: true,
buttons: {
"Yes": function() {
$(this).dialog("close");
},
"Not this time": function() {
$(this).dialog("close");
},
"Never": function() {
$(this).dialog("close");
}
}
});
}
}
break;
}
你尝试把事件.preventDefault ()函数内你定义为onclick?我的意思是,这样做:'curSubmit [0] .onclick = function(event){event.preventDefault(); ...' – Squirrel