Android网页填表简单例子
Android网页填表简单例子
用Android写个简单的网页填表操作的时候,发现webview出现了奇怪的白屏现象
用Android对百度首页进行网页填表的主要操作步骤为:
- 先设置好webview的一些配置
- 将editText的内容填写到百度首页的输入框
- 点击“百度一下”按钮
代码如下:
public class WebActivity extends AppCompatActivity {
private WebView wv_main = null;
private EditText edit = null;
private Button btn = null;
private Button btn2= null;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_web);
// 初始化组件
initViews();
// 获取webSettings
WebSettings settings = wv_main.getSettings();
//设置true,才能让Webivew支持<meta>标签的viewport属性
settings.setUseWideViewPort(true);
//加载https的URL时在5.0以上加载需要此设置:
wv_main.getSettings().setMixedContentMode(WebSettings.MIXED_CONTENT_COMPATIBILITY_MODE);
// 设置支持JavaScript
wv_main.getSettings().setJavaScriptEnabled(true);
//设置开启本地DOM存储
wv_main.getSettings().setDomStorageEnabled(true);
// 加载默认url
wv_main.loadUrl("https://www.baidu.com");
// 点击链接的加载为在当前WebView中加载
wv_main.setWebViewClient(new WebViewClient() {
@Override
public boolean shouldOverrideUrlLoading(WebView view, String url) {
view.loadUrl(url);
return true;
}
});
}
// 初始化组件的方法
public void initViews() {
wv_main = (WebView) findViewById(R.id.WV_main);
edit = (EditText) findViewById(R.id.et_input);
btn = (Button) findViewById(R.id.btn);
btn2= (Button) findViewById(R.id.btn);
}
public void click1(View v){
String a=edit.getText().toString();
wv_main.loadUrl("javascript:document.getElementById('index-kw').value='" + a + "';");
}
public void click2(View v){
wv_main.loadUrl("javascript:document.getElementById('index-bn').click();");
}
}
这样点击填入内容按钮的时候,即在对百度首页的输入框填写内容,会出现白屏,只出现了要填写的内容,其它变为白屏,如下图:
但解决办法很简单,只需更改一下填写内容click1里的JavaScript即可。
public void click1(View v){
String a=edit.getText().toString();
String js="javascript:(function(){document.getElementById('index-kw').value='" + a + "'})();";
wv_main.loadUrl(js);
}
可能是loadUrl()会使页面刷新的原因吧,这样更改一下就不会出现白屏了:
所以关键应该是要把js代码包装在一个匿名函数里。
javascript: (function() {
//js代码
})();
再用loadUrl执行。

浙公网安备 33010602011771号