首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >只在浏览器关闭时执行查询

只在浏览器关闭时执行查询
EN

Stack Overflow用户
提问于 2016-03-08 09:47:24
回答 2查看 566关注 0票数 0

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

First.php

代码语言:javascript
复制
<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>

logout.php

代码语言:javascript
复制
    <?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);
?>
EN

回答 2

Stack Overflow用户

发布于 2016-03-08 10:02:19

浏览器卸载当前文档时触发事件“先卸载”。如果在同一页上使用窗体,则需要在按下提交时取消设置事件。

例如:window.onbeforeunload=null;

您可以在onsubmit处理程序中这样做:

代码语言:javascript
复制
<form onsubmit="cancelUnloadAndSubmit()">
  Enter name: <input type="text">
  <input type="submit">
</form>
票数 0
EN

Stack Overflow用户

发布于 2016-03-08 10:03:39

将单击处理程序包装如下:

代码语言:javascript
复制
<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>
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/35863975

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档