2016-03-08 2 views
0

Существует небольшая проблема. Я хочу выполнить запрос всякий раз, когда браузер или вкладка закрыты, но если на этой странице есть какая-либо кнопка или ссылка, и я нажимаю на любую из них, тогда запрос также выполняется. , Нужна помощь в этомВыполнение запроса только при закрытии браузера

First.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> 

logout.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); 
?> 
+1

А что именно ваш вопрос? –

+0

Когда пользователь закрывает браузер, я хочу выполнить запрос удаления. используя функцию onbeforeload, я могу добиться ее, но проблема заключается в выполнении запроса, когда я нажимаю кнопку или нажимаю ссылку. Я хочу выполнить запрос только, когда браузер закрыт. –

+0

Возможно (очень вероятно) дубликат http://stackoverflow.com/questions/1631959/how-to-capture-the-browser-window-close-event –

ответ

0

Событие "beforeunload" срабатывает, когда браузер выгружает текущий документ. Если вы используете форму на той же странице, вам нужно отменить событие, когда нажата кнопка.

, например, как это: window.onbeforeunload=null;

вы можете сделать это в onsubmit обработчика, как это:

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

Wrap замковых обработчиков, как так:

<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> 
Смежные вопросы