Ho un elemento div trascinabile che utilizza HTML 5 localStorage per ricordare la sua posizione nella pagina utenti. Funziona beneDiv posizione leggermente sfalsata quando si utilizza jquery trascinabile con memoria locale HTML
Sto anche utilizzando lo window.addEventListener
per aggiornare la posizione se il div è stato trascinato in un'altra scheda aperta. Funziona ma la posizione del div in una scheda del browser è leggermente sfalsata rispetto al div in un'altra scheda. Qualcuno sa che cosa sta causando questo?
Un esempio di base è riportato di seguito. Salvalo come un file html e aprilo in due diverse schede per vedere cosa sta succedendo.
<!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>
UPDATE: Le sue le proprietà CSS di trasformazione che stanno causando l'offset.
+1, ottima domanda. Vorrei che più persone facessero domande in questo modo ... –
Questa è una domanda davvero comoda, poiché è possibile incollare il codice sorgente direttamente in un file localmente, senza doversi preoccupare di dove verrà inclusa la libreria jQuery. –
Sembra che se ho questo file aperto in 2 diverse schede e sposto un div, l'altro div si sposterà anche sull'altra scheda. Strano! –