1

Android アプリケーションで、WebView を介して EPUB ブックを表示しようとしています。本をナビゲートするために、私はEPUBJSを使用しており、いくつかの視覚効果にはPure Drawerを使用しています。Android KitKat(4.4) バージョン以降を使用するデバイスでアプリケーションを実行すると、これは正常に動作しますが、Jelly Beans(4.3) などのバージョンより下で試してみると、の一部の機能は機能しEpub.jsません。たとえばBook.prevBook.next、 、Book.goto(url)およびBook.renderTo()のような他の機能は引き続き正常に機能し、すべての本の章を取得できますBook.getToc()Book.getMetadata()

次のように、すべてのコードをjavascriptファイルに入れます

function init_js_code(url){
               var Book = ePub(url, { restore: true});
               Book.getMetadata().then(function(meta){
                  document.title = meta.bookTitle;

              });
              $( "#next" ).click(function() {
                    Book.nextPage();
              });
              $( "#prev" ).click(function() {
                    Book.prevPage();
              });

              Book.getToc().then(function(toc){
                var $select = document.getElementById("toc"),
                    $docfrag = document.createDocumentFragment();
                var cList = $('ul.nav-primary');
                toc.forEach(function(chapter) {
                  // logic to create a menu
                });

              });
              Book.ready.all.then(function(){
                document.getElementById("loader").style.display = "none";
              });
              Book.renderTo("area");

HTMLファイルでは、この関数への呼び出しだけがあります

<head>
<script src="jquery.js"></script>
...
</head>
<body>
...
<script>
          function getPDFURL(){
                 ...
          }

          var url = 'http://' + getPDFURL() + '.epub';
          init_js_code(url);
    </script>
</body>

html コードはこのようにアクティビティでレンダリングされます

final WebView webView = (WebView) findViewById(R.id.webView1);
    WebSettings settings = webView.getSettings();
    settings.setJavaScriptEnabled(true);
    settings.setDomStorageEnabled(true);
    if(android.os.Build.VERSION.SDK_INT >= android.os.Build.VERSION_CODES.JELLY_BEAN) {
        settings.setAllowUniversalAccessFromFileURLs(true);
    }

    if(android.os.Build.VERSION.SDK_INT >= android.os.Build.VERSION_CODES.KITKAT) {
        WebView.setWebContentsDebuggingEnabled(true);
    }
    if(android.os.Build.VERSION.SDK_INT > android.os.Build.VERSION_CODES.HONEYCOMB) {
        settings.setDisplayZoomControls(false);
    }
    webView.setWebChromeClient(new WebChromeClient() {
        public void onProgressChanged(WebView view, int progress)
        {
            ..
        }
    });
    webView.loadUrl("file:///android_asset/.../index.html?url="+material_url);

このデバイスでは、一部の Javascript 機能がブロックされています。他に方法はありますか?

4

0 に答える 0