ユーザーが[ログイン]ボタンをクリックするとページに追加されるフォーム(登録とログイン)とモーダルバックグラウンドがあります。jqueryを使用してajax経由でフォームを送信しています。
$.post("/login",{
"ajax":true,
"email":$("#popup-window #login-form-email").val(),
"password":$("#popup-window #login-form-password").val()
},function(response){
console.log(response);
if(response.message=="success"){
if(response.user.type==1){
console.log(window);
// window.location = "http://www.whatever.com/admin";
window[0].ownerDocument.location.href="http://www.whatever.com/admin";
}
if(response.user.type==2) window[0].ownerDocument.location.href = "http://www.whatever.com/trades";
}else{
$("#popup-window #login-form").append("<div id='invalid-login'>Invalid Login</div>");
}
},"json");
を除いてすべてが機能します
window.location = "http://www.whatever.com/admin";
そして、ウィンドウオブジェクトは私が期待するものではありません。それを調べてみると、次のことが機能することがわかりました
window[0].ownerDocument.location.href="http://www.whatever.com/admin";
私がテストしたすべてのもの(IE7、IE8、IE9、chrome、firefox)で。それがなぜなのか、これが正しい方法であるかどうかはわかりません。
私はjavascriptとDOMに比較的慣れていないので、ここで何が起こっているのかを本当に理解したいと思います。