Xamarin Forms - WebViewSource показывает пустую страницу - PullRequest
0 голосов
/ 01 июля 2018

У меня есть index.html и Posts1 - 10.html внутри папки с именем CachedPosts внутри Environment.GetFolderPath(Environment.SpecialFolder.Personal). Моя цель - загрузить index.html, в котором есть ссылки href для загрузки Posts1 - 10.html.

Вы можете сказать мне использовать папку Assets, но .. Posts1 - 10.html & index.html сохраняются программно.

C# Code:

C# Code

Так что моя проблема лежит в области "еще".

index.html загружается, но всякий раз, когда я нажимаю на ссылку href внутри index.html, она загружает пустую страницу: /

index.html Code

<html>
<body>
<a href="Posts1.html"><h2>Interesting Stuff 1</h2></a>
<a href="Posts2.html"><h2>Interesting Stuff 2</h2></a>
</body>
</html>

The Posts Code

<html>
<body>
<h1>Title: Posts Title</h1>
<p>So this is my first interesting post</p>
</body>
</html>

1 Ответ

0 голосов
/ 01 июля 2018

Я посмотрел на рендерер Forms для Android WebView и, не переписывая его, правильно поддерживать многорежимный контент, который вам понадобится для прогрессивного веб-приложения, хостинга React и т. Д., Вы можете "просто" укажите URL для начальной страницы и вообще не используйте HtmlWebViewSource / BaseUrl, если у вас есть простая процедура кэширования.

Это означает, что первая загруженная страница должна поступить из вашего кэша вместе со всем другим содержимым, на которое ссылаются эти страницы, поэтому, если вы динамически создаете какие-либо страницы, включая эту первую, их необходимо сохранить в кеш первый.

Если вы работаете на Android, вы можете использовать Uri.Builder:

var url = new Android.Net.Uri.Builder()
                            .Scheme("file")
                            .Authority("localhost")
                            .AppendEncodedPath(CacheDir.CanonicalPath)
                            .AppendEncodedPath("index.html")
                            .Build();

Или просто закодировать его через строку формата с помощью:

$"file://localhost/{cacheDir}/index.html" 

или

$"file:///{cacheDir}/index.html" // skip localhost is it is implied

И используйте полученный URL с UrlWebViewSource:

webViewSource = new UrlWebViewSource { Url = $"file:///{cacheDir}/index.html" };
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...