为什么notnt window.location.href =没有使用Safari转发到页面?

时间:2015-07-04 17:11:49

标签: javascript parse-platform facebook-javascript-sdk

我的网站允许用户通过Fb按钮登录,我正在使用FB / Parse.com JDK进行此https://parse.com/docs/js/guide#users-facebook-users

一旦识别出用户,下面的代码就会记录用户并将其转发到网址上。这在Chrome下可以正常使用,但无法使用Safari,页面只停留在空白的fb.html页面上

我看到

存在一些历史性问题
  

window.location.href =

但是,找不到适用于我的解决方案的修复程序。有没有人知道解决这个问题?

    [HttpPost]
    public ActionResult Edit(Employee employee)
    {

        if (ModelState.IsValid)
        {
            var employeeModify = db.Find(employee.Id);
            employeeModify.name = employee.Name;
            employeeModify.DepartamentId = employee.DepartamentId;
            db.SaveChanges();
            return RedirectToAction("Index");
        }
      ViewBag.IDList = new SelectList(db.Departments, "ID", "Name", employee.ID);

        return View(employee);
    }

4 个答案:

答案 0 :(得分:8)

最佳方式适用于所有浏览器:

setTimeout(function(){document.location.href = "user_home.html";},250);

答案 1 :(得分:1)

我认为你需要使用......

window.location = 'user_home.html';

答案 2 :(得分:1)

我在Safari上也发生过这种情况并找到了这篇文章,但发现了另外一个我希望添加了大量浏览器支持的解决方案。而不是替换当前位置使用名为assign()

的位置对象上的方法
document.location.assign(document.location.origin + "/user_home.html")

这也有效

location.assign(location.origin + "/user_home.html")

在桌面设备和移动iOS设备上使用Chrome和Safari进行测试

参考: https://www.w3schools.com/jsref/met_loc_assign.asp

答案 3 :(得分:0)

当我遇到这个问题时,我使函数在任何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;
};

是有点“肮脏”的解决方案,但是无论如何都可以重定向页面。