如何从资产加载html时将资产中的js文件加载到webview中?

时间:2017-05-26 03:44:12

标签: android html webview

我想加载从Android Asset文件夹中获取JS引用的HTML文件。当我在浏览器中打开HTML文件时,它会正确加载所有JS引用。但是当我从Android JS文件加载时没有引用。
示例代码

WebView web_view = FindViewById<WebView>(Resource.Id.webView); `web_view.Settings.JavaScriptEnabled = true;`
                string sampleHtmlData = "<html><head>" +
                "<script src=\"epub.min.js\"></script>" +
                "<script src=\"jquery-1.10.2.min.js\" type=\"text/javascript\"></script>" +
                "<script>" +
                "var book = ePub(\"Azure_Cosmos_DB_and_DocumentDB_Succinctly/\");" +
                "$(document).ready(function(){  book.renderTo(\"area\"); });" +
                "</script>" +
                "</head><body> <div id=\"prev\" onclick=\"book.prevPage()\" style=\"font - size: 64px; cursor: pointer;\" class=\"arrow\">‹</div>" +
                "<div id =\"area\" style =\"height:500px;\" ></ div >" +
                "<div id = \"next\" onclick = \"book.nextPage()\" style = \"font-size: 64px;cursor:pointer;\" class=\"arrow\">›</div></body></html>";
                web_view.LoadDataWithBaseURL("file:///android_asset/Sample/", sampleHtmlData, "text/html", "UTF-8", null);

我也尝试使用LoadUrl加载。

web_view.LoadUrl("file:///android_asset/Sample/index.html")

文件路径: 资产/样品

有人建议我加载带有相应JS文件的本地Html文件吗? Android将支持EPUB js吗?

3 个答案:

答案 0 :(得分:0)

你应该试试这位朋友。

webView.loadData("Your HTML source", "text/html", "UTF-8");

webView.loadData()将网页源代码直接加载到WebView

请将您的JAVASCRIPT嵌入HTML

答案 1 :(得分:0)

你好试试这个例子,如果它有帮助

public class MainActivity extends Activity {

WebView view;
JSInterface api;

public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);

    view = (WebView) findViewById(R.id.webView);
    api = new JSInterface();
    WebSettings asd = view.getSettings();

    asd.setJavaScriptEnabled(true);
    view.addJavascriptInterface(api, "api");

    String url = "file:///android_asset/index.html";
    view.loadUrl(url);
    view.setWebViewClient(new WebViewClient() {
        @Override
        public boolean shouldOverrideUrlLoading(WebView view, String url) {
            view.loadUrl(url);
            return true;
        }

        public void onPageFinished(WebView view, String url) {
            view.loadUrl("javascript:api.getString(document.getElementsByClassName('txtTitle')[0].innerHTML)");
        }
    });
}

private class JSInterface {

    @JavascriptInterface
    public void getString(String str) {
        Log.d("STRING", str);
    }

}
}

答案 2 :(得分:-1)

通过启用以下属性已解决此问题。

if (Build.VERSION.SdkInt >= Build.VERSION_CODES.JellyBean)
            {
                webView.Settings.AllowUniversalAccessFromFileURLs = true;
                webView.Settings.AllowFileAccessFromFileURLs = true;
            }

注意:将所需的JS文件直接保存到Assets文件夹中,而不是保留内部文件夹以保存JS文件

-Thanks