从android中的assets文件夹运行注入的JavaScript

时间:2015-06-23 17:38:36

标签: javascript android webview


我正在使用WEBVIEW从我的应用程序中显示我的网页。

我的网页是服务器上的简单HTML文件,因此要显示我的网站,应用程序需要下载此HTML页面,但无需下载其他文件,例如{ {1}},CSS等,因为这些文件位于JavaScript

我的应用程序可以轻松地将assets folder文件注入网页,但无法运行所有CSS个文件。有时我的应用程序运行所有JavaScript个文件,但有时只能运行一半JavaScript个文件。

为什么不运行所有JS个文件? (我一遍又一遍地打开和关闭应用程序以强制它运行所有JS个文件!) [告诉我,如果你需要更多代码]
我使用API​​ 18.
我使用这些代码注入JavaScriptJS

CSS
private void injectjs() {
    try {
        InputStream inputStream = getAssets().open("jscript.js");
        byte[] buffer = new byte[inputStream.available()];
        inputStream.read(buffer);
        inputStream.close();
        String encoded = Base64.encodeToString(buffer, Base64.NO_WRAP);
        webView.loadUrl("javascript:(function() {" +
                "var parent = document.getElementsByTagName('head').item(0);" +
                "var script = document.createElement('script');" +
                "script.type = 'text/javascript';" +
                "script.innerHTML = window.atob('" + encoded + "');" +
                "parent.appendChild(script)" +
                "})()");
    } catch (Exception e) {
        e.printStackTrace();
    }
}

我在互联网上的HTML文件:

private void injectCSS() {
    try {
        InputStream inputStream = getAssets().open("style.css");
        byte[] buffer = new byte[inputStream.available()];
        inputStream.read(buffer);
        inputStream.close();
        String encoded = Base64.encodeToString(buffer, Base64.NO_WRAP);
        webView.loadUrl("javascript:(function() {" +
                "var parent = document.getElementsByTagName('head').item(0);" +
                "var style = document.createElement('style');" +
                "style.type = 'text/css';" +
                "style.innerHTML = window.atob('" + encoded + "');" +
                "parent.appendChild(style)" +
                "})()");
    } catch (Exception e) {
        e.printStackTrace();
    }
}

0 个答案:

没有答案