[removed].href不会重定向([removed].href doesn't red

2019-08-18 23:35发布

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

这是我的功能:

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

任何想法,为什么?

Answer 1:

如果要调用通过一个提交按钮此功能。 这可能是为什么浏览器不重定向的原因。 它将运行在该函数的代码,然后提交,而不是重定向的页面。 在这种情况下,改变你的按钮的类型标签。



Answer 2:

从这个答案,

window.location.href不工作

你只需要添加

return false;

在你的函数的底部



Answer 3:

虽然这是很老的问题,我想回答,因为我最近面临同样的问题,并从这里得到的解决方案 -

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

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

这为我工作。



Answer 4:

一些括号丢失。

更改

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

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

没有优先考虑的|| 相比于+

也取下后一切window.location分配:此代码是不应该作为页面的变化被执行。

注意:您不需要设置location.href 。 这是不够的,只是设置location



Answer 5:

window.location.replace是仿效重定向的最佳方式:

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

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



Answer 6:

确保你不是在你的网址的结尾发送“#”。 在我的情况,这是防止window.location.href从工作。



Answer 7:

我给你这个问题一个美好的功能:

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()用于任何情况下和超时对于“最后一次尝试”。



Answer 8:

为了防止有人疲惫而又愚蠢的,因为我是晚上于是我遇到了许多线程拥护不同的方法来得到一个JavaScript重定向,所有这些都没有...

您不能使用window.location.replacedocument.location.href或任何你喜欢的香草的JavaScript方法页面重定向到本身

所以,如果你动态地重定向路径从后端添加,或从数据标签拉,确保你做检查在某个阶段对重定向到当前页面。 这可能是简单的:

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


文章来源: window.location.href doesn't redirect