我有一個ASP.Net頁面,其中包含<div>
和<img>
標記。圖像很大,所以<div>
的尺寸設置爲500x500像素,並且溢出設置爲滾動。在ASP.Net中使用Javascript平移圖像頁面溢出Div
我試圖添加圖像平移使用單擊並拖動圖像。但是,每次我開始拖動圖像都會跳過元素的邊界並佔用整個頁面。
下面是示例代碼說明了這個問題:
<%@ Page Language="VB" AutoEventWireup="false" CodeFile="Default.aspx.vb" Inherits="_Default" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
<title></title>
</head>
<body>
<form id="form1" runat="server">
<div>
<div id="divInnerDiv" style="overflow:scroll; width:500px; height:500px; cursor:move;">
<img id="imgTheImage" src="Page0001.jpg" border="0" />
</div>
<script type="text/javascript">
document.onmousemove = mouseMove;
document.onmouseup = mouseUp;
var dragObject = null;
var mouseOffset = null;
function mouseCoords(ev){
if(ev.pageX || ev.pageY){
return {x:ev.pageX, y:ev.pageY};
}
return {
x:ev.clientX + document.body.scrollLeft - document.body.clientLeft,
y:ev.clientY + document.body.scrollTop - document.body.clientTop
};
}
function getMouseOffset(target, ev){
ev = ev || window.event;
var docPos = getPosition(target);
var mousePos = mouseCoords(ev);
return {x:mousePos.x - docPos.x, y:mousePos.y - docPos.y};
}
function getPosition(e){
var left = 0;
var top = 0;
while (e.offsetParent){
left += e.offsetLeft;
top += e.offsetTop;
e = e.offsetParent;
}
left += e.offsetLeft;
top += e.offsetTop;
return {x:left, y:top};
}
function mouseMove(ev) {
ev = ev || window.event;
var mousePos = mouseCoords(ev);
if(dragObject){
dragObject.style.position = 'absolute';
dragObject.style.top = mousePos.y - mouseOffset.y;
dragObject.style.left = mousePos.x - mouseOffset.x;
return false;
}
}
function mouseUp(){
dragObject = null;
}
function makeDraggable(item){
if(!item) return;
item.onmousedown = function(ev){
dragObject = this;
mouseOffset = getMouseOffset(this, ev);
return false;
}
}
makeDraggable(document.getElementById("imgTheImage"));
</script>
</div>
</form>
</body>
</html>
另外請注意,這個HTML在non-ASP.Net頁面正常工作。
在ASP.Net Javascript中是否存在導致此問題的內容?有沒有人有建議在一個<div>
塊內平移一個可以在ASP.Net中工作的JPEG?我曾嘗試使用jQueryUI庫,但結果是相同的。
.net是無關緊要的,因爲這是所有客戶端行爲。我會再次查看jQuery.UI可拖動 - 特別是包含選項:http://docs.jquery.com/UI/Draggable#option-containment – 2010-03-17 16:05:20
@DA - 如果.Net方面不相關,那麼爲什麼這項工作在直接的HTML頁面中,但不在ASPX頁面中?我使用jqueryUI創建了一個使用包含選項的示例頁面,該選項在IE8中工作,但在IE7中查看時遇到類似的溢出問題。我發佈了幾條消息給jQuery UI板,添加了一個錯誤報告...沒有迴應,沒有修復。 – 2010-03-17 17:23:22
我不知道。如果我不得不猜測:.net會在您的頁面中注入腳本或標記或CSS來干擾您所寫的內容。將非.net頁面的呈現頁面與.net頁面進行比較。 – 2010-03-17 18:03:45