仅在浏览器关闭时执行查询


Execute a query only when browser is closed

有点问题。我想在浏览器或选项卡关闭时执行查询,但如果该页面中存在任何按钮或链接,并且我单击其中任何一个,则查询也会执行。.需要这方面的帮助

第一.php

<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1
/jquery.min.js"></script>
<script type="text/javascript">
 $(document).bind('keypress', function(e) {
    if (e.keyCode == 116){
      validNavigation = true;
    }
  });
  // Attach the event click for all links in the page
  $("a").bind("click", function() {
    validNavigation = true;
  });
  // Attach the event submit for all forms in the page
  $("form").bind("submit", function() {
    validNavigation = true;
  });
  // Attach the event click for all inputs in the page
  $("input[type=submit]").bind("click", function() {
    validNavigation = true;
  }); 
 window.addEventListener("beforeunload", function (e) {
 if (!validNavigation) { 
 $.ajax({
url: 'logout.php',
type: 'POST',
async: false,
timeout: 4000
});
}
})
</script>

注销.php

    <?php
$username = "root";
$password = "";
$hostname = "localhost"; 
$dbhandle = mysql_connect($hostname, $username, $password) 
 or die("Unable to connect to MySQL");
echo "Connected to MySQL<br>";

$selected = mysql_select_db("examples",$dbhandle) 
  or die("Could not select examples");
$result =  mysql_query("DELETE FROM cars WHERE id='1'");
mysql_close($dbhandle);
?>

当浏览器卸载当前文档时,将触发事件"beforeunload"。如果您在同一页面上使用表单,则需要在按下提交时取消设置事件。

例如像这样: window.onbeforeunload=null;

您可以在 OnSubmit 处理程序中执行此操作,如下所示:

<form onsubmit="cancelUnloadAndSubmit()">
  Enter name: <input type="text">
  <input type="submit">
</form>

像这样包装点击处理程序:

<script type="text/javascript">
  var validNavigation = false;
  $(document).ready(function() {
    $("a").click(function() {
        validNavigation = true;
    });
  });
window.addEventListener("beforeunload", function (e) {
  if (!validNavigation) { 
    // do something...
  }
})
</script>