Firefox在提交后不执行语句

时间:2012-02-24 06:50:23

标签: javascript firefox

我有JSP,我使用javascript提交表单。它是一个弹出窗口,因此必须关闭提交弹出窗口。我使用了以下代码:

document.forms["formname"].submit();
window.close();

问题是 - 表单成功提交但窗口没有关闭。 它在IE中运行良好。

3 个答案:

答案 0 :(得分:1)

我怀疑它是如何在IE中工作的。 在您提交表单并将控件返回给浏览器之后,Javascript没有任何控制权。提交表单后,您应该使用其他机制来关闭窗口。

答案 1 :(得分:0)

不要从要关闭的窗口上下文中运行的脚本关闭窗口,而是尝试从打开它的窗口的上下文中关闭它。例如:

var popup;

function pop() {
  popup = window.open('foo', 'mypopup', 'menubar=no,location=no,resizable=no,scrollbars=no,status=no');
  console.log(popup);
}

function unpop() {
  popup.close(); // close the popup
}

这适用于Firefox。您可以实时测试here

答案 2 :(得分:0)

正如您所发现的,一旦您提交表单,您就已将控制权交给浏览器,并且无法保证该页面中的任何其他javascript都会执行。它可能只是立即开始加载结果页面。因此,您有几种选择:

  1. 您可以将结果页面关闭。因此,在提交后加载结果页面时,它包含自己的window.close()
  2. 您可以使用ajax而不是表单提交将数据发送到您的服务器。然后,ajax代码发送数据后的行将执行。为了安全起见,您可能希望等到ajax调用成功返回窗口之前(取决于您正在做什么以及知道它是否成功的重要性)。
  3. 您可以从打开表单的父窗口控制事物,并从那里关闭事物。