为什么 window.location.href= 不使用 Safari 转发到页面?
Why isnt window.location.href= not forwarding to page using Safari?
我的站点允许用户通过 Fb 按钮登录,为此我使用 FB / Parse.com JDK https://parse.com/docs/js/guide#users-facebook-users
一旦用户被识别,下面的代码就会让用户登录并将他们转发到 url。这在 Chrome 下按预期工作,但在使用 Safari 时无法工作,该页面仅停留在空白的 fb.html 页面上
我发现
存在一些历史问题
window.location.href=
但是,找不到适用于我的解决方案的修复程序。有人知道解决这个问题的方法吗?
Parse.FacebookUtils.logIn(null, {
success: function(user) {
if (!user.existed()) {
} else {
window.location.href="user_home.html";
}
},
error: function(user, error) {
}
});
我认为你需要使用...
window.location = 'user_home.html';
在所有浏览器中的最佳工作方式:
setTimeout(function(){document.location.href = "user_home.html";},250);
我在 safari 上也遇到过这种情况,我发现了这个 post,但我找到了另一个解决方案,我想添加它并提供大量浏览器支持。不要替换当前位置,而是使用位置对象上名为 assign()
的方法
document.location.assign(document.location.origin + "/user_home.html")
这也有效
location.assign(location.origin + "/user_home.html")
在 Chrome 和桌面和移动 iOS 设备上的 Safari 中测试
当我解决这个问题时,我使功能在任何 Safari 以及包括移动浏览器在内的所有浏览器上都能正常工作:
function windowLocation(url){
var X = setTimeout(function(){
window.location.replace(url);
return true;
},300);
if( window.location = url ){
clearTimeout(X);
return true;
} else {
if( window.location.href = url ){
clearTimeout(X);
return true;
}else{
clearTimeout(X);
window.location.replace(url);
return true;
}
}
return false;
};
有点"dirty"的解决方案,但让您能够在任何情况下重定向您的页面。
我想检测主页,但 iphone 和 safari 遇到了同样的问题。
我只是在着陆页中添加了一个名为“home”的 class,然后只需将此 class 检查为
if (document.querySelector('.home') !== null) {
// the conditions comes here
}
详情见http://toihid.com/how-to-detect-home-page-in-iphone-and-safari/
我的站点允许用户通过 Fb 按钮登录,为此我使用 FB / Parse.com JDK https://parse.com/docs/js/guide#users-facebook-users
一旦用户被识别,下面的代码就会让用户登录并将他们转发到 url。这在 Chrome 下按预期工作,但在使用 Safari 时无法工作,该页面仅停留在空白的 fb.html 页面上
我发现
存在一些历史问题window.location.href=
但是,找不到适用于我的解决方案的修复程序。有人知道解决这个问题的方法吗?
Parse.FacebookUtils.logIn(null, {
success: function(user) {
if (!user.existed()) {
} else {
window.location.href="user_home.html";
}
},
error: function(user, error) {
}
});
我认为你需要使用...
window.location = 'user_home.html';
在所有浏览器中的最佳工作方式:
setTimeout(function(){document.location.href = "user_home.html";},250);
我在 safari 上也遇到过这种情况,我发现了这个 post,但我找到了另一个解决方案,我想添加它并提供大量浏览器支持。不要替换当前位置,而是使用位置对象上名为 assign()
的方法document.location.assign(document.location.origin + "/user_home.html")
这也有效
location.assign(location.origin + "/user_home.html")
在 Chrome 和桌面和移动 iOS 设备上的 Safari 中测试
当我解决这个问题时,我使功能在任何 Safari 以及包括移动浏览器在内的所有浏览器上都能正常工作:
function windowLocation(url){
var X = setTimeout(function(){
window.location.replace(url);
return true;
},300);
if( window.location = url ){
clearTimeout(X);
return true;
} else {
if( window.location.href = url ){
clearTimeout(X);
return true;
}else{
clearTimeout(X);
window.location.replace(url);
return true;
}
}
return false;
};
有点"dirty"的解决方案,但让您能够在任何情况下重定向您的页面。
我想检测主页,但 iphone 和 safari 遇到了同样的问题。
我只是在着陆页中添加了一个名为“home”的 class,然后只需将此 class 检查为
if (document.querySelector('.home') !== null) {
// the conditions comes here
}
详情见http://toihid.com/how-to-detect-home-page-in-iphone-and-safari/