此代码将鼠标移动坐标存储在数组中,并应将其发布到onbeforeunload。但它没有发布。如果我改变
名称:移动
到
名称:“blabla”
它有效。意味着问题出在“移动”变量上。我怎样才能让它发挥作用?
$(document).ready(function(){
var moves = [];
$("html").mousemove(function(e){
moves.push(e.pageX + "x" + e.pageY)
});
window.onbeforeunload = function() {
$.ajax({
type: "POST",
url: "mailyaz.php",
data: {
name: moves;
}
});
});
});
答案 0 :(得分:2)
你可以试试这个。 这是我几个月前开发的一个小例子。 在这种情况下,坐标存储在文本文件中,但您可以将其替换为INSERT到数据库中。
在客户端上放了这个:
var moves = ""; //Now an String to store the Coords
$(document).ready(function(){
//When you moves the mouse inside the Page then
//concat the Coords into the String var and add a Line-Brak at the end
$("html").mousemove(function(e){
moves += (e.pageX + " x " + e.pageY + "\n");
});
//Here the magic happen: bind a function to onbeforeunload event that POST
//the String to the server
$(window).bind('beforeunload', function() {
$.post("server.php",{name:moves});
});
});
现在您需要服务器端的一个名为server.php的页面,其中包含
//Capture the String
$cursorMoves = ($_POST['name']);
$myFile = "testFile.txt";
$fh = fopen($myFile, 'w');
fwrite($fh, $cursorMoves);
fclose($fh);
答案 1 :(得分:1)
onbeforeunload
必须返回一个字符串。但是,ajax请求将被显示的对话框阻止。如果用户接受并离开页面,则可能会中断请求。