Javascript Firefox在提交后不执行语句

Javascript Firefox在提交后不执行语句,javascript,firefox,Javascript,Firefox,我有JSP,在这里我使用javascript提交表单。这是一个弹出窗口,因此提交后必须关闭弹出窗口。我使用了以下代码: document.forms["formname"].submit(); window.close(); 问题是-表单已成功提交,但窗口未关闭。 它在IE中工作得很好。我怀疑它在IE中工作得如何。 在提交表单并将控件返回到浏览器之前,Javascript没有任何控件。提交表单后,应使用其他机制关闭窗口。请尝试从打开窗口的窗口上下文关闭窗口,而不是从要关闭的窗口上下文中运行的脚

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

document.forms["formname"].submit();
window.close();
问题是-表单已成功提交,但窗口未关闭。
它在IE中工作得很好。

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

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

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中对我很有用。您可以对其进行现场测试。

正如您所发现的,一旦提交表单,您就将控制权移交给浏览器,并且无法保证该页面中还会执行更多javascript。它可能会立即开始加载结果页面。因此,您有几个选项:

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

  • 表单被提交并将浏览器重定向到结果页。我认为代码不再到达
    window.close()
    。恭喜。。对于IE支持pulkit:)。我们很少在IE和Mozilla Firefox中找到不支持的东西。我想在这里添加:-之前我写的是:-document.formname.submit();window.close();在本例中,firefox正在关闭窗口,但没有提交表单。这段代码在一个javascript函数中,该函数在onclick事件中被调用。还没有!!无论哪种方式,所需的操作之一都不会发生。。要么提交表单,要么关闭窗口。但两者应该同时发生。