window.location.href不重定向

use*_*124 18 javascript window.location dom-events

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

这是我的功能:

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);

}
Run Code Online (Sandbox Code Playgroud)

如果我取消注释警报或者我打开了mozilla的bugzilla,它可以正常工作,否则它不会重定向到另一页.

有什么想法吗?

小智 40

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

  • 谢谢.帮了很多忙.我的按钮'type'为'submit'.将其更改为"重置"并且有效. (4认同)
  • 在这里补充一下,如果您仍然希望拥有`button[type=submit]`并在`form`的`submit`事件中处理重定向,您还可以在事件处理程序中调用`event.preventDefault()` - -设置 `window.location.href` 应该正确重定向。 (4认同)
  • 你绝对让我开心。12 小时的 google 和 stackoverflow 搜索。最佳。 (2认同)
  • 有趣的是,即使我的按钮不是“提交”,它也不起作用,因为它位于表单内。我不得不把它移到外面然后它就起作用了。 (2认同)

Sru*_*Suk 15

从这个答案,

window.location.href不起作用

你只需要添加

return false;
Run Code Online (Sandbox Code Playgroud)

在你的功能的底部

  • 不适合我 (3认同)

kom*_*kar 9

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

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

document.location.href = 'Your url',true;
Run Code Online (Sandbox Code Playgroud)

这对我有用.


Den*_*ret 6

缺少一些括号。

更改

 window.location.href = "/comments.aspx?id=" + movieShareId.textContent || movieShareId.innerText + "/";
Run Code Online (Sandbox Code Playgroud)

 window.location = "/comments.aspx?id=" + (movieShareId.textContent || movieShareId.innerText) + "/";
Run Code Online (Sandbox Code Playgroud)

||相比,没有优先级+

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

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


Pau*_*lus 6

您不能使用window.location.replacedocument.location.href或 任何您最喜欢的普通 javascript 方法将页面重定向到其本身

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

if(window.location.href == linkout)
{
    location.reload();
}
else
{
    window.location.href = linkout;
}
Run Code Online (Sandbox Code Playgroud)


Lui*_*eia 5

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


Eld*_*dar 3

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

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

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