0

現在、テスト目的のため、単純な Android アプリを作成しています。その中には、アセットフォルダーからのhtmlファイル(javascript(Mozilla PDFJS)を含む)を表示するWebView-Elementがあります。フラグメントコードから:

webView.getSettings().setJavaScriptEnabled(true);
webView.getSettings().setDomStorageEnabled(true);
webView.getSettings().setAllowFileAccess(true);
webView.getSettings().setAllowUniversalAccessFromFileURLs(true);
webView.loadDataWithBaseURL("file:///android_asset/", content, "text/html", "utf-8", null);

次の html を既に含むコンテンツ:

<script type="text/javascript">
var mypdf = null;
var currentPage = 1;
PDFJS.workerSrc = 'file:///android_asset/pdf.worker.jas';

PDFJS.getDocument('file:///android_asset/pdf.pdf').then(function(pdf) {
    mypdf = pdf;
    renderPage(currentPage);
});

function renderPage(pageNumber) {
    mypdf.getPage(pageNumber).then(function(page) {
        var scale = 1;
        var viewport = page.getViewport(scale);

        var canvas = document.getElementById('viewer');
        var context = canvas.getContext('2d');
        canvas.height = viewport.height-40;
        canvas.width = viewport.width;

        var renderContext = {
            canvasContext: context,
            viewport: viewport
        };
        page.render(renderContext);
    });

}
</script>
....
<body>
<h1>Header</h1>
<canvas id="viewer"></canvas>
</body>

logcat では、次のクロム コンソール出力を受け取ります。そのため、requestet pdf ページのレンダリングは行われません (それでも、ヘッダーは正常に表示されます)。

I/chromium﹕ [INFO:CONSOLE(22)] "Uncaught (in promise) TypeError: Cannot read property 'getContext' of null", source: file:///android_asset/ (22)

22行目参照

var context = canvas.getContext('2d');

webView.loadUrl(" http://www.dennissch.de/pdftest/ "); を介してリモート サーバーからまったく同じファイルをロードすると (file:///-links を置き換えます); すべて正常に動作します。では、document.getElementById がローカル ファイルで機能しないように見えるのはなぜでしょうか?

4

1 に答える 1