ウェブページ上の要素からデータを読み込もうとしていますが、間違ったページからデータを取得しているようです。私は同じWebViewの内側と私もこれを上書きOnPageFinishedにShouldOverrideLoadingを使用して、ポップアップを無効にして(「URL2」)webview.loadUrlを呼び出し、そこから、その後webview.loadUrl(「URL1」)Android WebView Xamarimを使用して間違ったページを評価するEvaluateJavasctipt
呼び出す
とOnPageFinished内のそのwebviewでevaluatejavascript( "document.getElementById(id)")を呼び出します。
結果の2番目のURLからデータを取得すると予想されますが、ロードされた最初のURLからデータを取得しています。なぜこれが起こっているのか分かりません。
ありがとうございます!
public override bool ShouldOverrideUrlLoading(WebView view, string url)
{
return HandleUrlLoading(view,url);
}
public override bool ShouldOverrideUrlLoading(WebView view, IWebResourceRequest request)
{
string url = request.Url.ToString();
return HandleUrlLoading(view, url);
}
private bool HandleUrlLoading(WebView view, string url)
{
_handleUrlOverride?.Invoke(view, url);
return true; // then it is not handled by default action
}
public void UrlLoading(WebView view, string url)
{
switch (State)
{
case State.PlayerlessLobby:
_loginView.LoadUrl(url);
_progressBar.Visibility = ViewStates.Visible;
_lobbyView.Visibility = ViewStates.Invisible;
_state = State.Login;
break;
case State.Lobby:
_gameView.LoadUrl(url);
_progressBar.Visibility = ViewStates.Visible;
_loginView.Visibility = ViewStates.Invisible;
_lobbyView.Visibility = ViewStates.Invisible;
_state = State.Game;
break;
case State.Game:
break;
case State.Login:
_loginView.Visibility = ViewStates.Invisible;
_progressBar.Visibility = ViewStates.Visible;
_loginView.LoadUrl(url);
_state = State.Lobby;
break;
}
}
UrlLoading方法は_loginView iが資格情報を入力し、ログインを打つログインページに続いて、ログインページ
_loginView.LoadUrl(url);
_progressBar.Visibility = ViewStates.Visible;
_lobbyView.Visibility = ViewStates.Invisible;
_state = State.Login;
をロードしているが起こって何
_handleUrlOverride
に割り当てられています。ログインページはリダイレクトされ、このコードに入ります。 _loginView.Visibility = ViewStates.Invisible;
_progressBar.Visibility = ViewStates.Visible;
_loginView.LoadUrl(url);
_state = State.Lobby;
loginViewリダイレクトをロードした後OnPageFinishedこの
var result = new JavaScriptResult();
result.SetCallback(this);
_loginView.EvaluateJavascript("document.body.children[0].innerHTML", result);
_loginView.Visibility = ViewStates.Visible;
です。しかし返されたJavaScriptは、最初のページからのdivです。
編集:
私がポップアップ負荷をオーバーライドしていてもいるようだ、と私はwebview.loadUrl(「URL2」)を呼び出していけない場合onPageFinishedはまだこのページのトリガーされます。だから私はそれがオーバーライドされなければならないにもかかわらず、ロードされる理由は分かりません。
あなたの 'ShouldOverrideLoading'のコードを表示してもよろしいですか? –
要求されたコードで更新しました –