我有一個可拖動的div元素,它使用HTML 5 localStorage來記住它在用戶頁面上的位置。這工作正常。div位置在使用jQuery可拖動HTML本地存儲時略有偏移
我還使用window.addEventListener
來更新位置,如果在另一個打開的選項卡中拖動div。這可以工作,但div在一個瀏覽器選項卡中的位置稍微偏移到另一個選項卡中的div。有誰知道這是什麼原因造成的?
一個基本的例子如下。將它保存爲html文件,並在兩個不同的選項卡中打開它以查看發生了什麼。
<!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>
更新:它導致偏移量的CSS轉換屬性。
+1,非常好的問題。我希望更多的人以這種方式提出問題...... –
這是一個非常容易的問題,因爲我們可以將源代碼直接粘貼到本地文件中,而不必擔心jquery庫將包含在哪裏。 –
這似乎是如果我有這個文件在2個不同的標籤中打開,我移動一個div,另一個div也會在另一個標籤上移動。奇怪的! –