Xamarin Forms 的 WebView - 在 Windows Phone 上找不到本地资产
Xamarin Forms' WebView - local assets not found on Windows Phone
我正在使用 WebView 从字符串中显示 HTML。此 HTML 引用了我在设备本地拥有的样式表。我正在按照 the official docs 的说明进行操作,因此可以访问本地 CSS 文件。它在 Android 和 iOS 上运行良好,但我无法在 Windows Phone 8.1 上运行。我将 CSS 文件放在项目的根目录中,并将构建操作设置为 Content,然后将 BaseUrl 设置为 ""
(我试过 ms-appx-web:///
同样,没有成功)。
有谁知道文档是否缺少一些说明?还是表格中的错误?任何帮助将不胜感激。
这是用数据填充 WebView 的代码(在表单 PCL 中):
private async Task LoadData()
{
string html = await _dataProvider.GetHtmlAsync("index");
WebView.Source = new HtmlWebViewSource
{
Html = html,
BaseUrl = _baseUrlProvider.Get()
};
}
_baseUrlProvider
是我的 WebViewBaseUrlProvider
的实例,定义如下:
internal class WebViewBaseUrlProvider : IWebViewBaseUrlProvider
{
public string Get() => "";
}
编辑:
看到 让我相信 Xamarin Forms 中确实存在错误。当 HTML 中的 link 包含整个 ms-appx-web:///style.css
而不仅仅是 style.css
时,它突然开始工作。显然,这不是很跨平台...
我刚刚找到答案 - Xamarin 只是忽略了 BaseUrl 属性:https://github.com/xamarin/Xamarin.Forms/blob/2d9288eee6e6f197364a64308183725e7bd561f9/Xamarin.Forms.Platform.WinRT/WebViewRenderer.cs#L26
我正在使用 WebView 从字符串中显示 HTML。此 HTML 引用了我在设备本地拥有的样式表。我正在按照 the official docs 的说明进行操作,因此可以访问本地 CSS 文件。它在 Android 和 iOS 上运行良好,但我无法在 Windows Phone 8.1 上运行。我将 CSS 文件放在项目的根目录中,并将构建操作设置为 Content,然后将 BaseUrl 设置为 ""
(我试过 ms-appx-web:///
同样,没有成功)。
有谁知道文档是否缺少一些说明?还是表格中的错误?任何帮助将不胜感激。
这是用数据填充 WebView 的代码(在表单 PCL 中):
private async Task LoadData()
{
string html = await _dataProvider.GetHtmlAsync("index");
WebView.Source = new HtmlWebViewSource
{
Html = html,
BaseUrl = _baseUrlProvider.Get()
};
}
_baseUrlProvider
是我的 WebViewBaseUrlProvider
的实例,定义如下:
internal class WebViewBaseUrlProvider : IWebViewBaseUrlProvider
{
public string Get() => "";
}
编辑:
看到 ms-appx-web:///style.css
而不仅仅是 style.css
时,它突然开始工作。显然,这不是很跨平台...
我刚刚找到答案 - Xamarin 只是忽略了 BaseUrl 属性:https://github.com/xamarin/Xamarin.Forms/blob/2d9288eee6e6f197364a64308183725e7bd561f9/Xamarin.Forms.Platform.WinRT/WebViewRenderer.cs#L26