【发布时间】:2019-06-26 12:22:45
【问题描述】:
这应该很简单,但它让我很头疼。 基本上我正在创建一个下载包含 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/";
}}
}
通过断点,我可以看到返回的路径,并且看起来很好。
作为测试,我尝试使用 iframe 传递一个 html 字符串,该 iframe 的源代码是我的本地 html。这很好地加载了 html,但给了我一堆 js 的跨域问题。因为框架需要相互交互。如果我能解决 iframe 的安全问题,我会接受这种方法。
经过更多的探索,我发现了这种奇怪之处。
所以这很奇怪。 在 iOS 中,这就是我所看到的
文件网址 - 看起来不错
file:///var/mobile/Containers/Data/Application/04BFAB43-2D92-48D3-941D-C48C8686E0A5/Documents/Courses/2d7d0a7d-145a-41d0-9abf-685a2b5dfc3c/Online_Placement_Test_no_timer_pack/YKZOP4NACH/3EPJNTG6M94T2EPJNTG6M94T2 Unit.html/
BaseUrl 看起来不错
file:///var/mobile/Containers/Data/Application/04BFAB43-2D92-48D3-941D-C48C8686E0A5/Documents/Courses/2d7d0a7d-145a-41d0-9abf-685a2b5dfc3c/Online_Placement_Test_no_timer_pack/YKZOP4NACH/3EPJNTG6M94T2EPJNTG6M94T2
Web 检查器中包含的 Js - 很奇怪,注意 html 文件名是如何添加的。现在这没有,因为
file:///var/mobile/Containers/Data/Application/04BFAB43-2D92-48D3-941D-C48C8686E0A5/Documents/Courses/2d7d0a7d-145a-41d0-9abf-685a2b5dfc3c/Online_Placement_Test_no_timer_pack/YKZOP4NACH/3EPJNTG6M94T2EPJNTG6M94T2 Unit.html/js/bootstrap.min.js
【问题讨论】:
-
更新:我已经更改了将 html 加载到 Control.LoadFileUrl(fileUrl, fileUrl); 的方式现在引用的 css 和 js 的路径看起来是正确的,但它们仍然没有加载。我已经尝试过
NSAppTransportSecurity 和NSAllowsArbitraryLoadsInWebContent NSAppTransportSecurity NSAllowsArbitraryLoads键>
标签: ios xamarin.forms webview wkwebview base-url