33

我知道这是一个讨论很多的问题,但我不知道为什么它对我不起作用。

这是我的功能:

function ShowComments(){

 alert("fired");
 var movieShareId = document.getElementById('movieId');
 //alert("found div" + movieShareId.textContent || movieShareId.innerText);
 //alert("redirect location: /comments.aspx?id=" + movieShareId.textContent || movieShareId.innerText + "/");
 window.location.href = "/comments.aspx?id=" + movieShareId.textContent || movieShareId.innerText + "/";
 var newLocation = window.location;
 //alert("full location: " + window.location);

}

如果我没有注释警报,或者如果我打开了 Mozilla 的 bugzilla,它可以正常工作,否则它不会重定向到其他页面。

任何想法为什么?

4

10 回答 10

73

如果您通过提交按钮调用此函数。这可能是浏览器不重定向的原因。它将运行函数中的代码,然后提交页面而不是重定向。在这种情况下,更改按钮的类型标签。

于 2014-01-15T09:41:01.590 回答
29

从这个答案,

window.location.href 不工作

你只需要添加

return false;

在函数的底部

于 2017-12-06T08:35:41.703 回答
9

来自这里的解决方案:http: //www.codeproject.com/Questions/727493/JavaScript-document-location-href-not-working

document.location.href = 'Your url',true;
于 2016-08-24T07:10:47.100 回答
8

缺少一些括号。

改变

 window.location.href = "/comments.aspx?id=" + movieShareId.textContent || movieShareId.innerText + "/";

 window.location = "/comments.aspx?id=" + (movieShareId.textContent || movieShareId.innerText) + "/";

||与相比,没有优先级+

分配后也删除所有内容window.location:此代码不应在页面更改时执行。

注意:您不需要设置location.href. 设置就足够了location

于 2013-04-02T08:07:54.880 回答
5

确保您没有在 URL 末尾发送“#”。就我而言,这阻止了 window.location.href 工作。

于 2018-02-15T17:37:20.083 回答
5

您不能使用window.location.replacedocument.location.href任何您喜欢的 vanilla javascript 方法将页面重定向到自身

因此,如果您从后端动态添加重定向路径,或者从数据标签中提取它,请确保在某个阶段检查重定向到当前页面。它可能很简单:

if(window.location.href == linkout)
{
    location.reload();
}
else
{
    window.location.href = linkout;
}
于 2019-05-27T07:56:54.460 回答
3

window.location.replace是模拟重定向的最佳方式:

function ShowComments(){
    var movieShareId = document.getElementById('movieId');
    window.location.replace("/comments.aspx?id=" + (movieShareId.textContent || movieShareId.innerText) + "/");
}

更多关于为什么window.location.replace是最好的 javascript 重定向的信息可以在这里找到。

于 2013-04-02T08:07:32.590 回答
3

我会给你一个很好的函数来解决这个问题:

function url_redirect(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;
};

这是该问题的通用工作解决方案window.location。一些浏览器会出现问题,window.location.href有时也会发生window.location故障。这就是为什么我们也使用window.location.replace()“最后一次尝试”的任何情况和超时。

于 2018-12-10T13:28:13.550 回答
2

在我的情况下,它在设置时间间隔后对所有浏览器都按预期工作。

setTimeout(function(){document.location.href = "myNextPage.html;"},100);
于 2020-02-03T14:05:23.660 回答
0

window.location.href 在 Android 中不起作用。我清除了 Android Chrome 中的缓存,它工作正常。建议在参与各种编码之前先尝试一下。

于 2020-01-08T22:25:01.337 回答