簡體   English   中英

在WebView中加載HTML文件后執行JavaScript指令

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

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM