在 Web 视图中插入值
Insert value in a web view
已经有很多关于如何在 Web 视图中插入值的帖子,但在语法方面存在很多混淆。这是一个简单的场景 - 有一个用户名和密码列表,当用户 select 其中一个用户名时,用户名和密码应该插入网页的输入框中。使用的网页是facebook.com。这是网页视图部分的代码。当从列表视图中 selected 用户名时,此代码将激活 -
WebView wb;
wb = (WebView) findViewById(R.id.webView1);
wb.loadUrl(url);
LoginActivity.this.wb.setWebViewClient(new WebViewClient() {
@Override
public boolean shouldOverrideUrlLoading(WebView wb, String url) {
wb.loadUrl(url);
//System.out.println("url activated 1");
return true;
}
@Override
public void onPageFinished(WebView wb, String url) {
// TODO Auto-generated method stub
//System.out.println("page loading finished 1");
wb.loadUrl("javascript:document.getElementById('email').value = '"+uname+"';document.getElementById('pass').value='"+pass+"';");
}
});
我仍然不知道在 webview 中输入值的语法是否正确。上面的代码不起作用。请帮忙!
更新问题 -
link 中有两个名称标签 - “https://m.facebook.com/login/”为 "email" 和 "name"。我想在单击按钮 b2 时将编辑文本框中的电子邮件和密码作为 ed2 和 ed3 输入到 Web 视图 (wb)。我使用了以下代码 -
b2.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
// TODO Auto-generated method stub
uname = ed2.getText().toString();
pass = ed3.getText().toString();
wb.loadUrl(url);
wb.getSettings().setJavaScriptEnabled(true);
wb.getSettings().setDomStorageEnabled(true);
wb.setWebViewClient(new WebViewClient() {
@Override
public boolean shouldOverrideUrlLoading(WebView wb, String url) {
wb.loadUrl(url);
return true;
}
});
wb.setWebViewClient(new WebViewClient() {
@Override
public void onPageFinished(WebView wb, String url) {
// TODO Auto-generated method stub
wb.loadUrl("javascript:(function(){document.getElementByTagName('email').value='" + uname
+ "';document.getElementByTagName('pass').value='" + pass + "';})()");
}
});
}
});
但它显示了两个错误 -
09-15 11:59:43.555:W/BindingManager(26200):无法调用 determinedVisibility() - 从未见过 pid 的连接:26200
09-15 11:59:43.890: I/chromium(26200): [INFO:CONSOLE(1)] "Uncaught TypeError: document.getElementByTagName is not a function", 来源: (1)
显然语法有问题。请帮忙!
WebView wb;
wb = (WebView) findViewById(R.id.webView1);
wb.loadUrl(url);
LoginActivity.this.wb.setWebViewClient(new OurViewClient() {
@Override
public boolean shouldOverrideUrlLoading(WebView wb, String url) {
wb.loadUrl(url);
//System.out.println("url activated 1");
return true;
}
@Override
public void onPageFinished(WebView wb, String url) {
// TODO Auto-generated method stub
//System.out.println("page loading finished 1");
wb.loadUrl("javascript:document.getElementById('email').value ='"+uname+"';document.getElementById('pass').value='"+pass+"';");
}
});
请检查我是否更改了 setWebViewClient 方法。所以现在包括你自己的 class 扩展 WebViewClient 如下所示。
public class OurViewClient extends WebViewClient {
public boolean shouldOverride(WebView v,String url){
v.loadUrl(url);
return true;
}
我试过了
getElementsByName('login')[0].submit();
但它不起作用。我尝试提交表格它工作正常。
document.getElementsByTagName('form')[0].submit();
javascript 就像
"javascript:(
function()
{
document.getElementsByName('email')[0].value='"+uname+"';
document.getElementsByName('pass')[0].value='"+pass+"';
document.getElementsByTagName('form')[0].submit();
})()"
这是代码
((Button) findViewById(R.id.button1))
.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
// TODO Auto-generated method stub
uname = ed2.getText().toString();
pass = ed3.getText().toString();
WebView wb;
wb = (WebView) findViewById(R.id.webView1);
wb.loadUrl(url);
wb.getSettings().setJavaScriptEnabled(true);
wb.setWebViewClient(new WebViewClient() {
@Override
public void onPageFinished(WebView web, String url) {
// TODO Auto-generated method stub
//String uname = "email@mail.com";
//String pass = "******";
web.loadUrl("javascript:(function(){document.getElementsByName('email')[0].value='"
+ uname
+ "';document.getElementsByName('pass')[0].value='"
+ pass + "';document.getElementsByTagName('form')[0].submit();})()");
}
});
}
});
已经有很多关于如何在 Web 视图中插入值的帖子,但在语法方面存在很多混淆。这是一个简单的场景 - 有一个用户名和密码列表,当用户 select 其中一个用户名时,用户名和密码应该插入网页的输入框中。使用的网页是facebook.com。这是网页视图部分的代码。当从列表视图中 selected 用户名时,此代码将激活 -
WebView wb;
wb = (WebView) findViewById(R.id.webView1);
wb.loadUrl(url);
LoginActivity.this.wb.setWebViewClient(new WebViewClient() {
@Override
public boolean shouldOverrideUrlLoading(WebView wb, String url) {
wb.loadUrl(url);
//System.out.println("url activated 1");
return true;
}
@Override
public void onPageFinished(WebView wb, String url) {
// TODO Auto-generated method stub
//System.out.println("page loading finished 1");
wb.loadUrl("javascript:document.getElementById('email').value = '"+uname+"';document.getElementById('pass').value='"+pass+"';");
}
});
我仍然不知道在 webview 中输入值的语法是否正确。上面的代码不起作用。请帮忙!
更新问题 -
link 中有两个名称标签 - “https://m.facebook.com/login/”为 "email" 和 "name"。我想在单击按钮 b2 时将编辑文本框中的电子邮件和密码作为 ed2 和 ed3 输入到 Web 视图 (wb)。我使用了以下代码 -
b2.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
// TODO Auto-generated method stub
uname = ed2.getText().toString();
pass = ed3.getText().toString();
wb.loadUrl(url);
wb.getSettings().setJavaScriptEnabled(true);
wb.getSettings().setDomStorageEnabled(true);
wb.setWebViewClient(new WebViewClient() {
@Override
public boolean shouldOverrideUrlLoading(WebView wb, String url) {
wb.loadUrl(url);
return true;
}
});
wb.setWebViewClient(new WebViewClient() {
@Override
public void onPageFinished(WebView wb, String url) {
// TODO Auto-generated method stub
wb.loadUrl("javascript:(function(){document.getElementByTagName('email').value='" + uname
+ "';document.getElementByTagName('pass').value='" + pass + "';})()");
}
});
}
});
但它显示了两个错误 -
09-15 11:59:43.555:W/BindingManager(26200):无法调用 determinedVisibility() - 从未见过 pid 的连接:26200
09-15 11:59:43.890: I/chromium(26200): [INFO:CONSOLE(1)] "Uncaught TypeError: document.getElementByTagName is not a function", 来源: (1)
显然语法有问题。请帮忙!
WebView wb;
wb = (WebView) findViewById(R.id.webView1);
wb.loadUrl(url);
LoginActivity.this.wb.setWebViewClient(new OurViewClient() {
@Override
public boolean shouldOverrideUrlLoading(WebView wb, String url) {
wb.loadUrl(url);
//System.out.println("url activated 1");
return true;
}
@Override
public void onPageFinished(WebView wb, String url) {
// TODO Auto-generated method stub
//System.out.println("page loading finished 1");
wb.loadUrl("javascript:document.getElementById('email').value ='"+uname+"';document.getElementById('pass').value='"+pass+"';");
}
});
请检查我是否更改了 setWebViewClient 方法。所以现在包括你自己的 class 扩展 WebViewClient 如下所示。
public class OurViewClient extends WebViewClient {
public boolean shouldOverride(WebView v,String url){
v.loadUrl(url);
return true;
}
我试过了
getElementsByName('login')[0].submit();
但它不起作用。我尝试提交表格它工作正常。
document.getElementsByTagName('form')[0].submit();
javascript 就像
"javascript:(
function()
{
document.getElementsByName('email')[0].value='"+uname+"';
document.getElementsByName('pass')[0].value='"+pass+"';
document.getElementsByTagName('form')[0].submit();
})()"
这是代码
((Button) findViewById(R.id.button1))
.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
// TODO Auto-generated method stub
uname = ed2.getText().toString();
pass = ed3.getText().toString();
WebView wb;
wb = (WebView) findViewById(R.id.webView1);
wb.loadUrl(url);
wb.getSettings().setJavaScriptEnabled(true);
wb.setWebViewClient(new WebViewClient() {
@Override
public void onPageFinished(WebView web, String url) {
// TODO Auto-generated method stub
//String uname = "email@mail.com";
//String pass = "******";
web.loadUrl("javascript:(function(){document.getElementsByName('email')[0].value='"
+ uname
+ "';document.getElementsByName('pass')[0].value='"
+ pass + "';document.getElementsByTagName('form')[0].submit();})()");
}
});
}
});