[英]Executing JavaScript instructions after loading HTML file in a WebView
我意识到一个Android程序将HTML文件加载到WebView中,HTML文件加载Leaflet.js,它根据您提供的提供程序显示不同样式的地图。
我使用以下指令在OnCreate()方法中加载页面:
myWebView.loadUrl("file:///android_asset/test.html");
之后,我需要从Handler(带有类名JavascriptInterface.java)中获取不同映射的列表,我将这些映射添加到WebView中,如下所示:
myWebView.addJavascriptInterface(new JavaScriptInterface(this, myWebView), "MyHandler");
最终代码需要如下所示:
myWebView.loadUrl("file:///android_asset/test.html");
myWebView.loadUrl("javascript:window.MyHandler.getMaps()");
问题是第一个loadUrl()不够快,所以第二个loadUrl在地图初始化之前就开始了,导致很多问题。
我发现的临时且可怕的解决方案是在执行它之前保持第二个loadUrl 1秒,如下所示:
myWebView.loadUrl("file:///android_asset/test.html");
Handler handler = new Handler();
handler.postDelayed(new Runnable() {
public void run() {
// Actions to do after 1 second
myWebView.loadUrl("javascript:window.MyHandler.getMaps()");
}
}, 1000);
有一种更好的方法来执行另一个指令吗? 我已经尝试过使用ASyncTask,但有可能我没有很好地实现它。
请调用myWebView.loadUrl(“javascript:window.MyHandler.getMaps()”); 在Webview onPageFinished事件中。
myWebView.setWebViewClient(new WebViewClient() {
@Override
public void onPageStarted(WebView view, String url, Bitmap favicon) {
Log.d("WebView", "onPageStarted " + url);
}
@Override
public void onPageFinished(WebView view, String url) {
myWebView.loadUrl("javascript:window.MyHandler.getMaps()");
}
});
myWebView.loadUrl("file:///android_asset/test.html");
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.