Posted on 2008-08-14 14:11
G_G 阅读(1515)
评论(1) 编辑 收藏 所属分类:
javascript
demo 下载: http://www.blogjava.net/Files/Good-Game/div_.rar
运行 div.html
html:
<html>
<head>
<script type="text/javascript" src="prototype.js"></script>
<script type="text/javascript" src="drag.js"></script>
<META http-equiv=Content-Type content="text/html; charset=utf8">
</head>
<body>
<a
onclick="getDrag(event,
'ajax.html?id=5',
'position:absolute;display:none;left:50; top:10; z-index:1000; padding:0px; background-color:#FFFFCC; color:#201000; font-size:12px; border:5px solid #284860;',
'background-color:#CCFFCC;')">测试使用(请点击)
</a>
</body>
</html>
js.
// 参考 : http://hi.baidu.com/foxlively/blog/item/0ce341b3f0c050a2d8335af8.html
// 使用 : prototype.js
//使用方法
var _div1 = null;
var _style2 = null;
function getDrag(event, url,divId, style1, style2) {
if (style2)
_style2 = style2;
else
_style2 = "";
if(divId==null)
_div1 = document.createElement("div");
else
_div1 = document.getElementById(divId);
_div1.style.position = 'absolute';
_div1.style.display = 'none';
if (_div1.style.border == null || _div1.style.border == '')
_div1.style.border = '1px solid #284860';
if (style1)
_div1.setAttribute('style', style1);
actionAjax(url);
document.body.appendChild(_div1);
showByEvent(event, _div1);
}
function getActionName(url) {
var question = url.indexOf("?");
if (question > 0) {
return url.substring(0, question);
}
else {
return url;
}
}
function getActionPars(url) {
var question = url.indexOf("?");
if (question > 0) {
return url.substring(question+1, url.length);
}
else {
var d = new Date();
var t = d.getTime();
return "timestamp="+t;
}
}
function actionAjax(url) {
var urls = getActionName(url);
var pars = getActionPars(url);
var myAjax = new Ajax.Updater(_div1, urls, {
method :'post',
parameters :pars,
onComplete :_action
});
}
function _action(req) {
var varhtml = "<div id=\"_drag_div\" style=\""
+ _style2
+ "\" align=\"right\"><br/><a href=\"javascript:;\" onclick=\"this.parentNode.parentNode.style.display='none';this.parentNode.parentNode.innerHTML=null;\">[关闭]</a></div>"
+ req.responseText
+"<div id=\"_drag_div\" style=\""
+ _style2
+ "\" align=\"left\"><br/><a href=\"javascript:;\" onclick=\"this.parentNode.parentNode.style.display='none';this.parentNode.parentNode.innerHTML=null;\">[关闭]</a></div>"
;
//varhtml = varhtml.replace(/form[ ]+action=["'](.*)["']/gi, "form action=\"javascript:actionAjax('$1');\" ") ;
_div1.innerHTML = varhtml;
var drag = new Drag();
// drag.build(div1);//拖动本身
drag.build(_div1, _div1.firstChild);// 通过一个对象拖动另一个对象
//drag.build(_div1, _div1.lastChild);// 通过一个对象拖动另一个对象
}
function showByEvent(event, useDiv) {
useDiv.style.display = "";
useDiv.style.left = mouseX(event);
useDiv.style.top = mouseY(event);
}
function mouseX(ev) {
if( ev == null )ev = event || window.event ;
if(ev.clientX){
return ev.clientX + document.body.scrollLeft - document.body.clientLeft;
}else if(ev.pageX){
return ev.pageX;
}
}
function mouseY(ev) {
if( ev == null )ev = event || window.event ;
if(ev.clientY){
return ev.clientY + document.body.scrollTop - document.body.clientTop ;
}else if(ev.pageX){
return ev.pageY;
}
}
function Drag() {
}
Drag.prototype.baseX = 0;
Drag.prototype.baseY = 0;
Drag.prototype.lastX = 0;
Drag.prototype.lastY = 0;
Drag.prototype.nowX = 0;
Drag.prototype.nowY = 0;
Drag.prototype.obD = null;
Drag.prototype.obM = null;
Drag.prototype.build = function(_obD, _obM) {
if (_obM) {
Drag.prototype.obM = _obM;
} else {
Drag.prototype.obM = _obD;
}
Drag.prototype.obD = _obD;
Drag.prototype.obM.onmousedown = function(event) {
Drag.prototype.lastX = mouseX(event);
Drag.prototype.lastY = mouseY(event);
Drag.prototype.baseX = Drag.prototype.obD.style.left;
Drag.prototype.baseY = Drag.prototype.obD.style.top;
this.onmousemove = function(event) {
Drag.prototype.nowX = mouseX(event);
Drag.prototype.nowY = mouseY(event);
Drag.prototype.obD.style.left = (parseFloat(Drag.prototype.baseX)
+ Drag.prototype.nowX - Drag.prototype.lastX)
+ "px";
Drag.prototype.obD.style.top = (parseFloat(Drag.prototype.baseY)
+ Drag.prototype.nowY - Drag.prototype.lastY)
+ "px";
}
}
Drag.prototype.obM.onmouseup = function(event) {
// obD.onmouseup = null;
Drag.prototype.obD.onmousemove = null;
Drag.prototype.obM.onmousemove = null;
}
Drag.prototype.obM.onmouseout = function() {
// obM.onmouseup = null
Drag.prototype.obM.onmousemove = null;
Drag.prototype.obD.onmousemove = null;
}
}