window.location.href不重定向

时间:2013-04-02 08:02:16

标签: javascript javascript-events window.location

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

这是我的功能:

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,它可以正常工作,否则它不会重定向到其他页面。

任何想法为什么?

10 个答案:

答案 0 :(得分:34)

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

答案 1 :(得分:9)

从这个答案,

window.location.href not working

你只需要添加

return false;

在你的功能底部

答案 2 :(得分:7)

虽然这是一个非常古老的问题,但我想回答一下,因为我最近遇到了同样的问题并从这里得到了解决方案 -

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

document.location.href = 'Your url',true;

这对我有用。

答案 3 :(得分:5)

缺少一些括号。

更改

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

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

||相比,+没有优先权。

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

注意:您无需设置location.href。只需设置location即可。

答案 4 :(得分: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重定向的原因的详细信息,请访问right here

答案 5 :(得分:2)

确保您没有在网址末尾发送“#”。就我而言,这阻止了window.location.href的运行。

答案 6 :(得分:1)

针对这个问题,我将为您提供一个不错的功能:

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()并在“最后一次尝试”中使用超时的原因。

答案 7 :(得分:1)

对于我来说,设置时间间隔后,它对于所有浏览器都能正常工作。

setTimeout(function(){document.location.href = "myNextPage.html;"},100);

答案 8 :(得分:0)

如果有人像我那天晚上那样感到疲倦和愚蠢,那我遇到了很多线程,拥护使用不同的方法来获取JavaScript重定向,但所有方法都失败了...

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

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

if(window.location.href == linkout)
{
    location.reload();
}
else
{
    window.location.href = linkout;
}

答案 9 :(得分:0)

window.location.href在Android中不起作用。 我清除了Android Chrome浏览器中的缓存,效果很好。 建议先尝试一下,然后再参与各种编码。