Xamarin.Forms.WebView在访问URL之前将项目添加到本地存储

时间:2018-11-27 16:16:11

标签: webview xamarin.forms local-storage

我已经在xaml中创建了带有WebView的ContenPage(下面的代码)。我在构造函数中传递webpageURL。我的目标是在开始加载传递的URL之前,使用javascirpt将项目添加到webview localstorage。我尝试了

之类的几种方法
  

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 :(得分:0)

我们不建议将这些代码放入构造函数中。因为调用这些代码时尚未初始化“ 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;

}