Android JavaScript自动完成表单WebView
作者:互联网
使用此代码,我可以轻松地将用户名和密码自动粘贴到facebook.com上
目的是为用户选择的每个站点自动粘贴用户名和密码.许多应用程序都可以这样做,但我还没有找到方法.谢谢你的帮助
@Override
public void onPageFinished(WebView view, String url) {
super.onPageFinished(view, url);
progressBar.setVisibility(View.GONE);
String user = "user";
String pwd = "pass";
view.loadUrl("javascript:(function(){document.getElementsByName('email')[0].value='"
+ user
+ "';document.getElementsByName('pass')[0].value='"
+ pwd + "';document.getElementsByTagName('form')[0];})()");
}
解决方法:
就像Speditz所说的,并不是每个登录页面都使用相同的name / id元素.
通常,大多数网站都使用type =“ email”或type =“ text”作为用户名,使用type =“ password”进行密码登录,并且您可以进行某些字段存在检查并在加载网页后执行注入
view.loadUrl(
"javascript:window.onload= (function(){"
+ "var selectElementName = document.querySelector('input[type=\"email\"]');"
+"if(selectElementName){selectElementName.value = \"" + user + "\";}"
+"var selectElementName = document.querySelector('input[type=\"text\"]');"
+"if(selectElementName){selectElementName.value = \"" + user + "\";}"
+"var selectElementpassword = document.querySelector('input[type=\"password\"]');"
+"if(selectElementpassword){selectElementpassword.value = \"" + pwd + "\";}"
+"})();"
);
这是JavaScript之上的纯文本格式,更易于理解:
window.onload= function(){
var selectElementName = document.querySelector('input[type="email"]');
if(selectElementName){selectElementName.value = "username";}
var selectElementName = document.querySelector('input[type="text"]');
if(selectElementName){selectElementName.value = "username";}
var selectElementpassword = document.querySelector('input[type="password"]');
if(selectElementpassword){selectElementpassword.value = "password";}
};
标签:webview,autofill,android 来源: https://codeday.me/bug/20191109/2011302.html