我尝试在 android 客户端应用程序的 webview 中填写表单。我知道它应该如何工作,但 getElementById 总是为我返回 null。我在不同的网站上尝试过。
这是我的 www.google.com 示例。
MyWebView view = new MyWebView(this);
view.getSettings().setJavaScriptEnabled(true);
view.loadUrl("http://www.google.com");
view.setWebViewClient(new WebViewClient() {
@Override
public boolean shouldOverrideUrlLoading(WebView v, String url) {
v.loadUrl(url);
return true;
}
@Override
public void onPageFinished(WebView v, String url) {
v.loadUrl("javascript:document.getElementById('mib').value = 'aaa';");
}
});
setContentView(view);
和 MyWebView 类(仅供参考)。
class MyWebView extends WebView {
Context context;
public MyWebView(Context context) {
super(context);
this.context = context;
}
@Override
public boolean onTouchEvent(MotionEvent event) {
// do some multi touch stuff
return true;
}
}
我总是收到错误:
09-01 04:35:26.453: I/chromium(2962): [INFO:CONSOLE(1)] "Uncaught TypeError: Cannot set property 'value' of null", source: https://www.google.de/?gws_rd=ssl (1)
但是元素“mib”应该在网站上。使用桌面浏览器(带有移动模拟的 chrome)一切正常。我不知道,这里出了什么问题。
感谢您的提示!
编辑:我取得了一些进展。关于这个站点,我还需要 setDomStorageEnabled(true)。不,我可以找到 DOM 对象并设置值,但是我没有显示修改后的站点,而是得到一个只有我设置的值的新空白站点。例如,带有文本“aaa”的白色空白站点。