【问题标题】:Firefox 3.6 - location.href not working in JSPFirefox 3.6 - location.href 在 JSP 中不起作用
【发布时间】:2010-05-03 22:57:55
【问题描述】:

我有带有method = POSTaction='/mydir/mypage/nextpage' 的JSP 页面

我有一个按钮:

<button title='Continue' onclick="this.form.perform.value='cancelButton'; javascript:doCloseWindow();">Continue</button>

和 JavaScript 方法如:

function doCloseWindow(){         
  location.href = "https://abc.xyz.com/mydir/?param=123";              
}

它在 Firefox 3.6 中不起作用。点击按钮;它重定向到我在表单操作中提到的路径。

使用 Tamper 数据,我发现请求通过 GET 转到 URL(如方法中),然后重定向到表单的操作 URL。

我还在方法调用中添加了 return false -- javascript:doCloseWindow();<strong>return false</strong>

我厌倦了各种组合,比如

window.location.href = "https://abc.xyz.com/mydir/?param=123";
window.document.location.href = "https://abc.xyz.com/mydir/?param=123";
document.location.href = "https://abc.xyz.com/mydir/?param=123";

但没有成功。

【问题讨论】:

  • 这是“火狐”,而不是“火狐”。 :-)

标签: javascript firefox firefox3.6


【解决方案1】:

在调用 doCloseWindow 之前删除“javascript:”。

此时,您已经在此事件处理程序中执行了一些 JavaScript 代码——尝试告诉浏览器再次以下代码是 JavaScript 是没有意义的。

【讨论】:

  • “不工作”有同样的症状?在您对 Dean J 的回答的评论中,您提到“它将转到该 URL,但状态返回为 302,然后转到其他一些默认 URL”。如果您的代码将浏览器发送到正确的 URL,但服务器正在重定向它,那么您的代码没问题;您使用的 URL 错误或服务器正在执行您未预料到的事情。
  • 我刚刚尝试按照您所说的删除 javascript 并在方法调用后使用“return false”。我还删除了'this.form.perform.value ='cancelButton''部分,然后只有它起作用。我尝试在我的方法中设置上述值,它再次提交表单而不是转到新 URL。我不明白,每当我在调用 location.href 之前尝试做一些其他操作时,它总是提交表单。
【解决方案2】:

尝试将您的 Javascript 调用更改为:

function doCloseWindow(){
    alert('here');
    location.href = "https://abc.xyz.com/mydir/?param=123";
    return false;
}

我想知道这个函数是否真的在运行。

【讨论】:

  • 功能上来了。我还可以在 Tamper 数据工具中看到 URL。但它不会被重定向到该 URL。我使用 代替
  • 非常感谢大家...结合您的建议并删除 this.form.perform ... 部分后,它可以工作。但是如果我在调用 location.href 之前尝试做某事,不明白为什么它会提交表单
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2014-05-05
  • 2014-07-15
  • 2011-06-10
  • 2011-12-18
  • 1970-01-01
  • 2015-03-30
  • 1970-01-01
相关资源
最近更新 更多