我有一个xamarin.forms应用程序,它使用HybridWebView(https://developer.xamarin.com/guides/xamarin-forms/custom-renderer/hybridwebview/)来显示html文档。我使用baseUrl将本地css和js加载到文档中。此代码在iOS 9.x上正常运行。
但是,在我升级到iOS 10之后,代码可以在iOS模拟器上运行,但不能在实际设备上运行。在设备上,它不会从本地存储加载css。
这是我正在使用的测试代码。它适用于模拟器,但不适用于设备。
CREATE TRIGGER [dbo].[TR_dbo_Customers_InsertUpdateDelete]
ON [dbo].[Companies]
AFTER INSERT, UPDATE, DELETE AS
BEGIN
UPDATE [dbo].[Customers]
SET [dbo].[Customers].[UpdatedAt] = CONVERT(DATETIMEOFFSET, SYSUTCDATETIME()) FROM INSERTED
WHERE inserted.[Id] = [dbo].[Customers].[Id]
END
在HybridWebView中,我使用以下代码来设置baseUrl
async void Handle_TestButtonClicked (object sender, System.EventArgs e)
{
string css = @"
body {
background-color: powderblue;
}
h1 {
color: blue;
}
p {
color: red;
}
";
var folder = await AppGlobals.AppStorage.GetContentFolder ();
string filename = "styles.css";
await AppGlobals.AppStorage.WriteToFile (folder, filename, css);
string html = @"<!DOCTYPE html>
<html>
<head>
<link rel=""stylesheet"" href=""styles.css"">
</head>
<body>
<h1>This is a heading</h1>
<p>This is a paragraph.</p>
</body>
</html>";
this.DocumentView.Html = html;
}
我正在使用PCLStorage库来读取/写入本地存储。
答案 0 :(得分:1)
我认为LoadHtmlString因加载本地css / js等而被破坏。
我通过将HTML字符串写入本地文件,然后使用LoadFileUrl加载它来解决此问题。这按预期工作
if (!String.IsNullOrEmpty (Element.Uri)) {
string filePath = await GetFilePathInContentFolderFromUri (Element.Uri);
var fileUrl = new NSUrl (filePath, false);
Control.LoadFileUrl (fileUrl, fileUrl);
}
另一个解决方法是将所需的css / js注入到html文档本身并仍然使用LoadHtmlString,这可行。