Xamarin.Forms.WebView Добавить элемент в локальное хранилище перед посещением URL - PullRequest
0 голосов
/ 27 ноября 2018

Я создал ContenPage с WebView внутри xaml (код ниже).Я передаю webpageURL в конструкторе.Моя цель состоит в том, чтобы добавить элемент в localstorage webview, используя javascirpt, еще до начала загрузки переданного URL.Я пробовал несколько методов, таких как

Browser.EvaluateJavaScriptAsync (javascirpt);или Browser.Evaluate (javascirpt);

перед выполнением в конструкторе

Browser.Source = URL;

или перенос этих методов внутри

Device.BeginInvokeOnMainThread (async () => {});

, но, тем не менее, они не работали должным образом.Знаете ли вы какие-либо решения моей проблемы?

public partial class WebView : ContentPage
{
public WebView(string URL)
{
    string item = "test";
    string javascirpt = String.Format("localStorage.setItem('ls.item', '{0}')", item);
    Browser.Eval(javascirpt);
    Browser.Source = URL;
}
}

Xaml:

<WebView x:Name="Browser" Grid.Column="0" Grid.Row="0" Grid.RowSpan="2"
          HeightRequest="1000"
          WidthRequest="1000"
          Navigating="WebOnNavigating"
          Navigated="WebOnEndNavigating" />

1 Ответ

0 голосов
/ 28 ноября 2018

Мы не рекомендуем помещать эти коды в конструктор. Так как класс "WebView" еще не инициализирован при вызове этих кодов. Попробуйте переместить их в метод OnAppearing.

protected override void OnAppearing()
{
   base.OnAppearing(); 

   string item = "test";
   string javascirpt = String.Format("localStorage.setItem('ls.item', '{0}')", item);
   Browser.Eval(javascirpt);
   Browser.Source = URL;

}
...