之前已经多次询问过,我浏览了所有内容,还没有明确的答案.
问题简化:是否可以将本地Javascript文件(从资产或存储)注入Android Web视图中加载的远程网页?我知道可以将这些文件注入Web-View中加载的本地Web页面(Assets HTML).
为什么我需要这个呢?:通过避免每次都下载较大的文件(如Js和CSS文件)来提高浏览体验.我想避免Web-View缓存.
我已经看到这个问题浮现在互联网上,但我还没有找到一个有效的解决方案.基本上,我想加载我的应用程序并按下按钮; 然后按钮操作将在已经加载到webview中的网站中填写用户名和密码(或等待onPageFinished).最后,将激活登录页面上的提交按钮.
根据我的理解,这可以通过使用loadUrl(javascript)进行java注入来完成,但我不知道java命令将填充哪些字段.iOS的问题也是一样,但命令略有不同.
是否有可能在webivew中使用javascript做我要求的事情,或者我是否必须在没有像这样或这样的webview的情况下做一个http-post ?
非常感谢您提供的任何帮助!
我在我的html下面加载 webView
现在我想做的是填充html来自我的java类变量的文本框,然后自动点击提交.
但我不知道该怎么做.
任何thougths将不胜感激.
我尝试从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);
Run Code Online (Sandbox Code Playgroud)
和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;
}
}
Run Code Online (Sandbox Code Playgroud)
我总是得到错误:
09-01 04:35:26.453: I/chromium(2962): [INFO:CONSOLE(1)] "Uncaught TypeError: Cannot set …Run Code Online (Sandbox Code Playgroud)