webview加载包含.js的本地html文件为<script src =“”> </script>

时间:2012-01-31 12:16:26

标签: android

我将 .html (其中包含 .js web链接)文件放在了assest中,现在我正在尝试加载url

mWebView = (WebView) findViewById(R.id.webview);
        mWebView.getSettings().setJavaScriptEnabled(true);
        mWebView.getSettings().setPluginsEnabled(true);
        mWebView.getSettings().setAllowFileAccess(true);

        mWebView.loadUrl("file:///android_asset/anim1.html");

在这里,我无法播放 .js 文件,等待肯定的回应。

1 个答案:

答案 0 :(得分:7)

首先,我认为您真的不太可能想要从资产中访问HTML和JavaScript文件,因为一旦应用程序被删除,资产就无法(也不应该)更新打包并签名。这意味着,使用资产中的HTML和JavaScript,您无法更新它们。解决该问题的方法是将HTML和JavaScript保存在内部或外部存储中,并从那里使用它。

其次,如果您使用我刚才解释过的方法,则不能再使用WebView.loadUrl()方法,而是需要使用WebView.loadDataWithBaseUrl()方法。像这样:

webView.loadDataWithBaseURL("http://some_url/", "some_data", "text/html", "utf-8", null);

然后,“some_data”将尝试作为HTML页面加载,如this previous SO answer中所示。当它尝试加载JavaScript资源(如/scripts/lib.js)时,它将被解析为http://some_url/scripts/lib.js,并且WebView将尝试加载该资源。当然它不能,这就是为什么你(在Java中)需要扩展WebViewClient类,并为shouldInterceptRequest(WebView wv, String url)方法提供实现。

当尝试在网页中提取任何资源时,将调用'ofhouldInterceptRequest',并将其返回值用作资源。