在WebView中加载HTML文件后,执行JavaScript指令



我实现了一个将HTML文件加载到WebView中的Android程序,HTML文件加载flaflet.js,根据您提供的提供商显示不同样式的地图。

> >

我使用此说明加载页面((方法:

myWebView.loadUrl("file:///android_asset/test.html");

之后,我需要从处理程序(带有类名称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在初始化地图之前进行,从而导致很多问题。

我发现的临时解决方案是在执行之前将第二个负载持续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);

有一种更好的方法来执行另一项指令吗?我已经尝试使用异步性,但是我可能没有很好地实现它。

请致电mywebview.loadurl(" javascript:window.myhandler.getmaps(("(;在WebView OnPageFined事件中。

     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");

最新更新