首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >WebView加载带有根路径的HTML内容

WebView加载带有根路径的HTML内容
EN

Stack Overflow用户
提问于 2019-08-01 13:10:37
回答 1查看 1.1K关注 0票数 2

我正在尝试用Xamarin在我的Android WebView中加载一个本地保存的HTML文件。我创建了一个CustomRenderer来访问Android WebView的原生功能。HTML内容加载得很好,但问题是我的css和js引用没有加载进去。我试图用LoadDataWithBaseURL()函数操作baseUrl,但是由于某种原因,样式表和脚本没有加载。

我的引用总是一样的,链接看起来像这样的href="/css/stylesheet.css"。我可以操作HTML中的字符串,但我想尝试通过使用不同的基本URL加载内容来实现这一点。

我的文件存储方式如下:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
/data/user/0/<api-key>/files/wwwroot/css/stylesheet.css"

脚本在不同的子文件夹中,等等。我在我的WebView中设置了以下设置:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
string baseUrl = _hhwebView.WWWROOT_PATH; ///data/user/0/<api-key>/files/wwwroot/
_webView.Settings.AllowContentAccess = true;
_webView.Settings.AllowFileAccess = true;
_webView.Settings.AllowFileAccessFromFileURLs = true;
_webView.Settings.AllowUniversalAccessFromFileURLs = true;
_webView.LoadDataWithBaseURL(baseUrl, content, "text/html", "UTF-8", null);

有谁知道我如何做到这一点吗?提前谢谢。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2019-08-02 12:35:55

我通过覆盖WebViewClient上的ShouldInterceptRequest方法解决了这个问题,而不是从字符串加载内容,我通过URL加载了内容,如下所示:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
_webView.LoadUrl("file://" + _hhwebView.WWWROOT_PATH + "/content.html");

我的覆盖方法看起来像这样:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
public override WebResourceResponse ShouldInterceptRequest(WebView view, IWebResourceRequest request)
{
    string url = request.Url.ToString();
    if (url.Contains(".css"))
    {
        string file = url.Replace("file:///", "");
        return ReturnResourceFile("text/css", "css", file.Split('/')[1]);
    }
    if (url.Contains(".js"))
    {
        string file = url.Replace("file:///", "");
        return ReturnResourceFile("text/javascript", "js", file.Split('/')[1]);
    }
    return base.ShouldInterceptRequest(view, request);
}


private WebResourceResponse ReturnResourceFile(string mimeType, string extension, string file)
{
    return new WebResourceResponse(mimeType, "UTF-8", File.OpenRead(Path.Combine(_hhwebView.WWWROOT_PATH, extension, file)));
}
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/57309803

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
查看详情【社区公告】 技术创作特训营有奖征文