我知道这是很多讨论的问题,但我无法弄清楚它为什么不为我工作。
这是我的功能:
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的打开它正常工作,否则它不会重定向到其他页面。
任何想法,为什么?
如果要调用通过一个提交按钮此功能。 这可能是为什么浏览器不重定向的原因。 它将运行在该函数的代码,然后提交,而不是重定向的页面。 在这种情况下,改变你的按钮的类型标签。
虽然这是很老的问题,我想回答,因为我最近面临同样的问题,并从这里得到的解决方案 -
http://www.codeproject.com/Questions/727493/JavaScript-document-location-href-not-working解决方案:
document.location.href = 'Your url',true;
这为我工作。
一些括号丢失。
更改
window.location.href = "/comments.aspx?id=" + movieShareId.textContent || movieShareId.innerText + "/";
至
window.location = "/comments.aspx?id=" + (movieShareId.textContent || movieShareId.innerText) + "/";
没有优先考虑的||
相比于+
。
也取下后一切window.location
分配:此代码是不应该作为页面的变化被执行。
注意:您不需要设置location.href
。 这是不够的,只是设置location
。
window.location.replace
是仿效重定向的最佳方式:
function ShowComments(){
var movieShareId = document.getElementById('movieId');
window.location.replace("/comments.aspx?id=" + (movieShareId.textContent || movieShareId.innerText) + "/");
}
为什么更多信息window.location.replace
是JavaScript重定向可以找到最好的就在这里 。
确保你不是在你的网址的结尾发送“#”。 在我的情况,这是防止window.location.href从工作。
我给你这个问题一个美好的功能:
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()
用于任何情况下和超时对于“最后一次尝试”。
为了防止有人疲惫而又愚蠢的,因为我是晚上于是我遇到了许多线程拥护不同的方法来得到一个JavaScript重定向,所有这些都没有...
您不能使用window.location.replace
或document.location.href
或任何你喜欢的香草的JavaScript方法页面重定向到本身 。
所以,如果你动态地重定向路径从后端添加,或从数据标签拉,确保你做检查在某个阶段对重定向到当前页面。 这可能是简单的:
if(window.location.href == linkout)
{
location.reload();
}
else
{
window.location.href = linkout;
}