这可能应该很简单,但这一直让我头疼。 基本上,我正在创建一个应用程序,该应用程序下载包含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