私はMVCで作業しており、ポップアップウィンドウを使用してログインシステムを実装できるようにしたいと考えています。
私が立ち往生しているのは、ポップアップウィンドウでログインが成功すると、ログインを閉じる必要があり、メインページでリダイレクトが発生する必要があるということです。JQueryでスコープの問題が大量に発生しているため、これを達成するのに苦労しています。
これでポップアップウィンドウを作成します:
window.open('@Url.Action("Login", "User", null, "http")', 'Login', 'height=500,width=300');
上記のコードの前var window =
に追加して、ログインが成功したときに閉じたいウィンドウを参照できるようにすると便利ですが、その変数はログインウィンドウの範囲外です。
@{
ViewBag.Title = "Login";
}
<h2>Login</h2>
<p id="login-fail" style="display:none">Incorrect username/password</p>
@using (Html.BeginForm()) {
@Html.LabelFor(x => x.Email, new { id = "txt-email" })
@Html.TextBoxFor(x => x.Email)
<br />
<label for="txt-password">Password</label>
<input id="txt-password" type="password" />
<input type="submit" value="Login" />
}
<script type="text/javascript">
$(function () {
var success = '@Model.Success';
if (success == "True") {
loginSuccess(this.window);
}
var failed = '@Model.Failed';
if (failed == "True") {
$("#login-fail").show();
}
});
</script>
フォームが投稿されたときに部分ビューを更新し、ページが読み込まれたときにJqueryが成功を確認します。成功したら、現在のウィンドウをloginSuccessというjs関数に渡そうとします。
function loginSuccess(elem) { // successful login has occurred
elem.close();
window.location = //getRedirect;
}
これまでのところ、ポップアップウィンドウを閉じることができないため、リダイレクトを設定するときにメインウィンドウにフォーカスする必要があります。
メインウィンドウとポップアップの両方が各参照を表示する関数と呼ばれるJavaScriptファイルがあります。ただし、ポップアップウィンドウを作成するjsは関数ファイルになく、ウィンドウ変数はどちらのウィンドウでも使用できません。
簡単に言えば、LinkedInのログインプロセスをモックしようとしているので、ポップアップウィンドウを作成するコードは、を呼び出すことによって呼び出されますIN.UI.Authorize().place();
。これは、モックのLinkedInを使用する場合でも、本物。
特にポップアップウィンドウを何らかの方法で参照してから、リダイレクトのためにメインウィンドウに再度フォーカスするなど、これに関するサポートをいただければ幸いです。