Tengo un elemento div arrastrable que usa HTML 5 localStorage para recordar su posición en la página de los usuarios. Esto funciona bienPosición div ligeramente desplazada al usar jquery que se puede arrastrar con almacenamiento local HTML
También estoy usando el window.addEventListener
para actualizar la posición si el div se arrastró en otra pestaña abierta. Esto funciona, pero la posición del div en una pestaña del navegador se compensa ligeramente con el div en la otra pestaña. ¿Alguien sabe qué está causando esto?
Un ejemplo básico está a continuación. Guárdelo como un archivo html y ábralo en dos pestañas diferentes para ver qué está sucediendo.
<!DOCTYPE html>
<html xmlns="http://www.w3.org/1999/xhtml" >
<head>
<title>Untitled Page</title>
<script type="text/javascript" src="https://ajax.googleapis.com/ajax/libs/jquery/1.7.2/jquery.min.js"></script>
<script type="text/javascript" src="https://ajax.googleapis.com/ajax/libs/jqueryui/1.8.18/jquery-ui.min.js"></script>
<style type="text/css">
.note
{
position: absolute;
width:200px;
height:220px;
background: #2E2E2E;
top: 50px;
left: 50px;
transform:rotate(7deg);
-ms-transform:rotate(7deg);
-moz-transform:rotate(7deg);
-webkit-transform:rotate(7deg);
-o-transform:rotate(7deg);
}
</style>
<script type="text/javascript">
$(function() {
var note = $(".note");
updatePosition(note);
note.draggable({ stop: function() {
var left = $(this).position().left;
var top = $(this).position().top;
localStorage.setItem("left", left);
localStorage.setItem("top", top);
}
});
window.addEventListener("storage", function (e) {
updatePosition(note);
},
false);
});
function updatePosition(note) {
var left = localStorage.getItem("left");
var top = localStorage.getItem("top");
note.css({ left: left + "px", top: top + "px" });
}
</script>
</head>
<body>
<div class="note"></div>
</body>
</html>
ACTUALIZACIÓN: Son las propiedades de transformación de CSS que están causando el desplazamiento.
+1, excelente pregunta. Ojalá más personas hicieran preguntas de esta manera ... –
Esta es una pregunta muy útil, ya que podemos pegar el código fuente directamente en un archivo localmente, sin tener que preocuparnos de dónde se incluirá la biblioteca jquery. –
Parece que tengo este archivo abierto en 2 pestañas diferentes y muevo un div, el otro div se moverá también en la otra pestaña. ¡Extraño! –