最新更新 sitemap 网站制作设计本站搜索
网页设计
国外网站 韩国网站 个人主页 手提袋设计 CSS 网页特效 平面设计 网站设计 Flash CMS技巧 服装网站 php教程 photoshop 画册 服务器选用 数据库 Office
虚拟主机 域名注册 云主机 网页设计 客服QQ:8208442

XML中如何兼容IE与FF的拖动DOM

日期:11-25    来源:中国设计秀    作者:cnwebshow.com

 B2j中国设计秀

这年头写js的人是越来越少了,一方面大部分的效果网上都有,另外一方面好多js框架可以用。我想知其然还要知其所以然,废话不多说,上代码..注释很详细:B2j中国设计秀
仅兼容IE:B2j中国设计秀
 B2j中国设计秀

B2j中国设计秀
/* B2j中国设计秀
该函数由mousedown事件处理调用 B2j中国设计秀
它为随后发生的mousemove和mouseup事件注册了临时的捕捉事件处理程序 B2j中国设计秀
并用这些事件处理程序拖动指定的文档元素 B2j中国设计秀
第二个参数必须是mousedown事件的事件对象 B2j中国设计秀
*/ B2j中国设计秀
function beginDrag(elementToDrag,event) B2j中国设计秀
{ B2j中国设计秀
//该元素当前位于何处 B2j中国设计秀
//该元素的样式性质必须具有left和top css属性 B2j中国设计秀
//此外,我们假定他们用象素做单位 B2j中国设计秀
//var x=parseInt(elementToDrag.style.left); B2j中国设计秀
//var y=parseInt(elementToDrag.style.top); B2j中国设计秀
//计算一个点和鼠标点击之间的距离,下面的嵌套的moveHandler函数需要这些值 B2j中国设计秀
var deltaX=event.clientX-parseInt(elementToDrag.style.left); B2j中国设计秀
var deltaY=event.clientY-parseInt(elementToDrag.style.top); B2j中国设计秀
// 注册mousedown事件后发生的mousemove和mouseup事件的处理程序 B2j中国设计秀
// 注意,它们被注册为文档的捕捉事件处理程序 B2j中国设计秀
// 在鼠标按钮保持按下的状态的时候,这些事件处理程序保持活动的状态 B2j中国设计秀
// 在按钮被释放的时候,它们被删除 B2j中国设计秀
document.attachEvent("onmousemove",moveHandler); B2j中国设计秀
document.attachEvent("onmouseup",upHandler); B2j中国设计秀
//我们已经处理了该事件,不要让别的元素看到它 B2j中国设计秀
event.cancelBubble=true; B2j中国设计秀
event.returnValue=false; B2j中国设计秀
/* B2j中国设计秀
这是在元素被拖动时候捕捉mousemove事件的处理程序,它响应移动的元素 B2j中国设计秀
*/ B2j中国设计秀
function moveHandler(e) B2j中国设计秀
{ B2j中国设计秀
//把元素移动到当前的鼠标位置 B2j中国设计秀
e=window.event; B2j中国设计秀
elementToDrag.style.left=(event.clientX-deltaX)+"px"; B2j中国设计秀
elementToDrag.style.top=(event.clientY-deltaY)+"px"; B2j中国设计秀
//不要让别的元素看到该事件 B2j中国设计秀
event.cancelBubble=true; B2j中国设计秀
} B2j中国设计秀
/* B2j中国设计秀
该事件将捕捉拖动结束的时候发生的mouseup事件 B2j中国设计秀
*/ B2j中国设计秀
function upHandler(e) B2j中国设计秀
{ B2j中国设计秀
//注销事件处理程序 B2j中国设计秀
document.detachEvent("onmouseup",upHandler); B2j中国设计秀
document.detachEvent("onmousemove",moveHandler);} B2j中国设计秀
event.cancelBubble=true; B2j中国设计秀
} B2j中国设计秀
调用它的HTML文件代码: B2j中国设计秀
 <html> B2j中国设计秀
 <head> B2j中国设计秀
  <title>Untitled Page</title> B2j中国设计秀
  <script type="text/javascript" src="dragIE.js"></script> B2j中国设计秀
 </head> B2j中国设计秀
 <body> B2j中国设计秀
 <div style="position:absolute;left:100px;top:100px;background-color:White;border:solid black;"> B2j中国设计秀
  <div style="background-color:Gray;border-bottom:solid black;padding:3px;font-family:Sans-Serif;font-weight:bold;" onmousedown="beginDrag(this.parentNode,event);"> B2j中国设计秀
  拖动我 B2j中国设计秀
  </div> B2j中国设计秀
  <div> B2j中国设计秀
  <p>This is a test.Testing,testing</p></div> B2j中国设计秀
 </div> B2j中国设计秀
 </body> B2j中国设计秀
 B2j中国设计秀

B2j中国设计秀
[Ctrl+A 全部选择 提示:你可先修改部分代码,再按运行]B2j中国设计秀

兼容火狐的拖动DOM元素的js:B2j中国设计秀
 B2j中国设计秀

B2j中国设计秀
function beginDrag(elementToDrag,event) B2j中国设计秀
{ B2j中国设计秀
var deltaX=event.clientX-parseInt(elementToDrag.style.left); B2j中国设计秀
var deltaY=event.clientY-parseInt(elementToDrag.style.top); B2j中国设计秀
if(document.addEventListener) B2j中国设计秀
{ B2j中国设计秀
document.addEventListener("mousemove",moveHandler,true); B2j中国设计秀
document.addEventListener("mouseup",upHandler,true); B2j中国设计秀
} B2j中国设计秀
else if(document.attachEvent) B2j中国设计秀
{ B2j中国设计秀
document.attachEvent("onmousemove",moveHandler); B2j中国设计秀
document.attachEvent("onmouseup",upHandler); B2j中国设计秀
} B2j中国设计秀
if(event.stopPropagation) event.stopPropagation(); B2j中国设计秀
else event.cancelBubble=true; B2j中国设计秀
if(event.preventDefault) event.preventDefault(); B2j中国设计秀
else event.returnValue=false; B2j中国设计秀
function moveHandler(e) B2j中国设计秀
{ B2j中国设计秀
  if (!e) e=window.event; //如果是IE的事件对象,那么就用window.event B2j中国设计秀
  //全局属性,否则就用DOM二级标准的Event对象。 B2j中国设计秀
elementToDrag.style.left=(event.clientX-deltaX)+"px"; B2j中国设计秀
elementToDrag.style.top=(event.clientY-deltaY)+"px"; B2j中国设计秀
if(event.stopPropagation) event.stopPropagation(); B2j中国设计秀
else event.cancelBubble=true; B2j中国设计秀
} B2j中国设计秀
function upHandler(e) B2j中国设计秀
{ B2j中国设计秀
if(document.removeEventListener) B2j中国设计秀
{ B2j中国设计秀
document.removeEventListener("mouseup",upHandler,true); B2j中国设计秀
document.removeEventListener("mousemove",moveHandler,true);} B2j中国设计秀
else B2j中国设计秀
{ B2j中国设计秀
document.detachEvent("onmouseup",upHandler); B2j中国设计秀
document.detachEvent("onmousemove",moveHandler);} B2j中国设计秀
} B2j中国设计秀
if(event.stopPropagation) event.stopPropagation(); B2j中国设计秀
else event.cancelBubble=true; B2j中国设计秀
}B2j中国设计秀