在从Environment.SpecialFolder.LocalApplicationData

时间:2019-02-01 22:01:49

标签: ios xamarin.forms webview wkwebview base-url

这可能应该很简单,但这一直让我头疼。 基本上,我正在创建一个应用程序,该应用程序下载包含html,css,javascript等的zip文件。 它将内容解压缩并存储在LocalApplicationData中,将index.html加载到Webview中,如下所示:

HtmlWebViewSource html = new HtmlWebViewSource();

html.Html = htmlString;
html.BaseUrl = DependencyService.Get().Get();
courseWindow.Source = html;

所有这些工作都很好,除了我以未格式化的html结尾,没有运行脚本等。 我假设这与baseURL有关,但是是否可能是其他原因,例如资源被阻止加载?

如果有人遇到过同样的问题,或者可以向我指出正确的方向,那就太好了。

这就是我的Android项目中的内容。

[assembly: Dependency(typeof(BaseUrl))]
namespace TCMobile.Droid
{
    public class BaseUrl : iBaseURL
    {
        public string Get()
        {
            return "file:/" + System.Environment.GetFolderPath(System.Environment.SpecialFolder.LocalApplicationData);
        }
    }
}

我还尝试过硬编码从html加载的确切目录的路径。

[assembly: Dependency(typeof(BaseUrl))]
namespace TCMobile.Droid
{
    public class BaseUrl : iBaseURL
    {
        public string Get()
        {
            return "file:/" + System.Environment.GetFolderPath(System.Environment.SpecialFolder.LocalApplicationData) +
                "Courses/2d7d0a7d-145a-41d0-9abf-685a2b5dfc3c/Online_Placement_Test_no_timer_pack/YKZOP4NACH3EPJNTG6M4T2BQDI/Unit_4_5/995/";
        }}
    }

有了断点,我可以看到返回的路径,并且看起来不错。

作为一个测试,我尝试将html字符串与包含源作为本地html的iframe一起传递。这样可以很好地加载html,但是却给了我一堆js跨域问题。因为框架需要彼此交互。如果我可以解决iframe的安全性问题,那么我会接受这种方法。

经过更多的探索之后,我看到了这种奇怪。

所以这很奇怪。 在iOS中,这就是我所看到的

文件网址-看起来不错

文件:/// var / mobile / Containers / Data / Application / 04BFAB43-2D92-48D3-941D-C48C8686E0A5 / Documents / Courses / 2d7d0a7d-145a-41d0-9abf-685a2b5dfc3c / Online_Placement_Test_no_timer_pack / YKZOP4 / YKZOP4 / Y4 Unit.html /

BaseUrl看起来不错

文件:/// var / mobile / Containers / Data / Application / 04BFAB43-2D92-48D3-941D-C48C8686E0A5 / Documents / Courses / 2d7d0a7d-145a-41d0-9abf-685a2b5dfc3c / Online_Placement_Test_no_timer_pack / YKZOP4 / YKZOP4 / Y4

Web检查器中包含的Js-很奇怪,请注意如何添加html文件名。现在,从此没了

文件:/// var / mobile / Containers / Data / Application / 04BFAB43-2D92-48D3-941D-C48C8686E0A5 / Documents / Courses / 2d7d0a7d-145a-41d0-9abf-685a2b5dfc3c / Online_Placement_Test_no_timer_pack / YKZOP4 / YKZOP4 / Y4 Unit.html /js/bootstrap.min.js

1 个答案:

答案 0 :(得分:0)

我想您已经从WebView docs获得了依赖服务,因此您尝试在每个平台上正确且不同地配置BaseUrl

您可以共享依赖项服务的代码吗?您必须对sample进行一些更改,因为它假定您的html,css和javascript位于应用程序的静态资源中。相反,您需要将路径返回到保存它们的位置。