我在使用onPageFinished方法在页面上正确运行一些JS时遇到了一些问题。在Android WebView中运行Javascript - onPageFinished循环
下面的代码包含在我创建的类中,它扩展了AsyncTask来获取和解析其他地方保存的JSON文件。
我能够正确获取JSON文件,解析数据并获取并设置WebView的URL。一切工作负载,因为它应该直到我试图运行一些JS onPageFinished方法。
//onPostExecute method runs when the doInBackground method is completed
@SuppressLint("SetJavaScriptEnabled")
@Override
protected void onPostExecute(Boolean aBoolean) {
super.onPostExecute(aBoolean);
//Casting as WebView as findViewById doesnt explicity return a value type.
webView = (WebView) findViewById(R.id.webView);
//Obtaining the websettings of the webView
WebSettings webViewSettings = webView.getSettings();
//Setting Javascript enabled
webViewSettings.setJavaScriptEnabled(true);
webView.setWebViewClient(new webViewClient(){
@Override
public void onPageFinished(WebView view, String url) {
super.onPageFinished(view, url);
webView.loadUrl("document.getElementById('field_133').value = 'Test';");
Log.d("onPageFinished", "The Page has finished loading");
}
});
//Obtaining the first item in the cellRef List Array - From here we will access the Url data for the train operator.
parsedUrl = cellRef.get(0).getUrl();
//load the page we parsed from online file
webView.loadUrl(parsedUrl);
Log.d("loadUrl", "Now load the parsed Url");
}
所有我期待在此刻要做的就是测试的JS能够正确填充一个文本框一旦页面加载了“测试”的价值 - 但是,WebView中似乎停留在循环装载&试图运行时刷新(看到的“页面加载完成”重复打印logcat中):
webView.loadUrl("document.getElementById('field_133').value = 'Test';");
这是试图一些JS注入在Android中的WebView正确的方法是什么?道歉,如果有明显的缺失,我的经验大部分在于斯威夫特。
任何帮助,将不胜感激。
谢谢
这看起来已经停止了“循环”,但现在我在正确的网址短暂(约0.5秒)所示的页面,那么它显示一个白色的屏幕,“测试'在WebView的左上角。是否有一种休息条款,您需要以与您脱离开关相同的方式加入? – 2015-04-01 15:57:25