如何在提交表单后关闭浏览器标签页?

27
<?php
    /* ... SQL EXECUTION TO UPDATE DB ... */
?>

<form method  = "post"
      action  = "<?=$_SERVER['php_self']?>" 
      onSubmit= "window.close();">
  ...
  <input type="submit" value="submit" />
  <input type="reset"  value="reset" />
</form>

我想在提交表单后关闭页面。运行上述代码后,单击提交按钮后页面被关闭,但是 SQL 没有执行。

有人能帮助我吗?

8个回答

77
<?php    
    /* ... SQL EXECUTION TO UPDATE DB ... */

    echo "<script>window.close();</script>";
?>

从表单的 onsubmit 事件中删除 window.close()


也许将其更改为 echo "<script type="text/javascript">window.close();</script> - HighTechProgramming15
这对我起作用了,但并不是因为我在尝试关闭它之前使用了 header('Location: text.php'); 函数,所以如果您正在使用 header 但是在您重定向到的 PHP 页面中使用了 window.close() 脚本...(例如我的 text.php)...希望这可以帮助到您。 - Mousa Alfhaily
7
2018年:在Chrome或Firefox上已经不能使用 - 存在一些安全问题。 - The Vojtisek

11

onsubmitform标签中删除。将此更改为:

<input type="submit" value="submit" />

收件人:

<input type="submit" value="submit" name='btnSub' />

然后写入这个:

if(isset($_POST['btnSub']))
    echo "<script>window.close();</script>";

5

Window.close()不再像以前那样起作用。可以在这里看到:

window.close和self.close在Chrome中无法关闭窗口

在我的情况下,我意识到我不需要关闭页面。因此,您可以使用以下方式将用户重定向到另一个页面:

window.location.replace("https://stackoverflow.com/");

1
如果您必须使用与操作相同的页面,则不能使用onSubmit="window.close();",因为它会在接收到响应之前关闭窗口。您必须动态输出一个JS片段,在SQL数据处理后关闭窗口。但是,使用另一页作为表单操作会更加优雅。

1

尝试 onsubmit="submit(); window.close()"


1
这对我非常有效:

This worked brilliantly for me, :

 $query = "INSERT INTO `table` (...or put your preferred sql stuff)" 
 $result = mysqli_query($connect, $query); 
 if($result){
  // If everything runs fine with your sql query you will see a message and then the window
  //closes
        echo '<script language="javascript">';
        echo 'alert("Successful!")';
        echo '</script>';
        echo "<script>window.close();</script>";
        }
 else {
        echo '<script language="javascript">';
        echo 'alert("Problem with database or something!")';
        echo '</script>';           
        }

1
这在我看来仍然没有解决问题。我正在尝试为大型活动构建一个小型注册系统。注册是通过扫描QR码(“门票”)进行的,而我正在尝试将点击量最小化。警报仍然需要我的注册团队执行此额外交互(确认/确定警报)! - MahNas92

0

这是因为事件onsubmit在表单提交之前被触发。

移除你的onSubmit,并在处理请求后将JavaScript输出到你的PHP脚本中。你现在正在关闭窗口,并取消向服务器发送请求。


-1

你可以尝试 这些方法

window.open(location, '_self').close();

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接