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



我已经在xaml中创建了带有WebView的ContenPage(下面的代码(。我正在构造函数中传递网页URL。我的目标是在开始加载传递的URL之前,使用javascirpt将项添加到webview本地存储中。我尝试了几种方法,比如

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" />

我们不建议把这些代码放在构造函数中。因为当你调用这些代码时,类"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;
}

最新更新