[英]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.