我知道这是一个很多讨论的问题,但我无法弄清楚为什么它对我不起作用。
这是我的功能:
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,它可以正常工作,否则它不会重定向到其他页面。
任何想法为什么?
答案 0 :(得分:34)
如果您通过提交按钮调用此功能。这可能是浏览器不重定向的原因。它将运行函数中的代码,然后提交页面而不是重定向。在这种情况下,请更改按钮的类型标签。
答案 1 :(得分:9)
答案 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.replace
或document.location.href
或任何您喜欢的原始javascript方法将页面重定向到自身。
因此,如果您要动态地从后端添加重定向路径,或者从数据标签中提取重定向路径,请确保在某个阶段确实检查了重定向到当前页面的操作。可能很简单:
if(window.location.href == linkout)
{
location.reload();
}
else
{
window.location.href = linkout;
}
答案 9 :(得分:0)
window.location.href在Android中不起作用。 我清除了Android Chrome浏览器中的缓存,效果很好。 建议先尝试一下,然后再参与各种编码。