<script type="text/javascript">
//实例化ajax
function InitAjax()
{
 var ajax=false;
 try {
  ajax = new ActiveXObject("Msxml2.XMLHTTP");
 } catch (e) {
  try {
   ajax = new ActiveXObject("Microsoft.XMLHTTP");
  } catch (E) {
   ajax = false;
  }
 }
 if (!ajax && typeof XMLHttpRequest!='undefined') {
  ajax = new XMLHttpRequest();
 }
 return ajax;
}
function sendmsg(name,value,divid,zs_c_id)
{
 //如果没有把参数ID传进来,与本例无关
 if (typeof(value) == 'undefined')
 {
  return false;
 }//得到用户记录传值
//如果name的值为bg,则保存皮肤的值
if(name == 'bg'){
var url = "recordevent.php?bg="+value+'&zs_c_id='+zs_c_id;
}
//如果name的值为dh,则保存动画的值
if(name == 'dh'){
var url = "recordevent.php?dh="+value+'&zs_c_id='+zs_c_id;
}
//如果name的值为bf,则保存播放器的值
if(name == 'bf'){
var url = "recordevent.php?bf="+value+'&zs_c_id='+zs_c_id;
}
//如果name的值为dh1,则保存导航的值if(name == 'dh1' && divid == 'daohang')
{
var pos=getElementPos(divid);
var width = document.getElementById(divid).clientWidth;
var height = document.getElementById(divid).clientHeight;
var zindex = document.getElementById(divid).style.zIndex;var dh1 = value; 
var url = "recordevent.php?dh1="+dh1+'&zs_c_id='+zs_c_id+"&zs_x="+pos.x+"&zs_y="+pos.y+"&width="+width+'&height='+height+'&zindex='+zindex;
} //这个是要发送到的页面,直接在页面后面加参数就好了,是GET提交嘛 //获取本页面中呆会要更新的内容的区域的标试,个人认为没用
 var show = document.getElementById("show_news");
 //实例化Ajax对象
 var ajax = InitAjax();
 //使用Get方式进行请求,这是构建用GET提交的方法,并不提交
 ajax.open("GET", url, true);
 //这里是当发送到的那个页面执行状态改变时执行后面的那个函数
 ajax.onreadystatechange = function() {
 //如果执行是状态完成,那么就把返回的内容赋值给上面指定的层  if (ajax.readyState == 4 && ajax.status == 200) {
   show.innerHTML += ajax.responseText;
  }
 }
 //发送
 ajax.send(null);
}
//背景保存到数据库
function save()
{var url = 'recordevent.php?save=1';var ajax = InitAjax();
ajax.open("GET",url,true);
ajax.onreadystatechange = function()
{
if(ajax.readyState==4 && ajax.status == 200)
{
alert(ajax.responseText);
}
}
ajax.send(null);
}
</script>
<!--鼠标拖动层-->
<script language="javascript">
  function $(_sId){return document.getElementById(_sId);}
   function moveStart (event, _sId){
  var oObj = $(_sId);
  oObj.onmousemove = mousemove;
  oObj.onmouseup = mouseup;
  oObj.setCapture ? oObj.setCapture() : function(){};
  oEvent = window.event ? window.event : event;
  var dragData = {x : oEvent.clientX, y : oEvent.clientY};
  var backData = {x : parseInt(oObj.style.top), y : parseInt(oObj.style.left)};
  function mousemove(){
   var oEvent = window.event ? window.event : event;
   var iLeft = oEvent.clientX - dragData["x"] + parseInt(oObj.style.left);
   var iTop = oEvent.clientY - dragData["y"] + parseInt(oObj.style.top);
   oObj.style.left = iLeft;
   oObj.style.top = iTop;
   dragData = {x: oEvent.clientX, y: oEvent.clientY};   
  }
  function mouseup(){
   var oEvent = window.event ? window.event : event;
   oObj.onmousemove = null;
   oObj.onmouseup = null;
   if(oEvent.clientX < 1 || oEvent.clientY < 1 || oEvent.clientX > document.body.clientWidth || oEvent.clientY > document.body.clientHeight){
    oObj.style.left = backData.y;
    oObj.style.top = backData.x;
   }
   oObj.releaseCapture ? oObj.releaseCapture() : function(){};
  }
 } 
</script>
<!--获取层位置-->
<script>
function getElementPos(elementId) {
var ua = navigator.userAgent.toLowerCase();
var isOpera = (ua.indexOf('opera') != -1);
var isIE = (ua.indexOf('msie') != -1 && !isOpera); // not opera spoof
var el = document.getElementById(elementId);
if(el.parentNode === null || el.style.display == 'none') {
   return false;
}      
var parent = null;
var pos = [];     
var box;     
if(el.getBoundingClientRect)    //IE
{         
   box = el.getBoundingClientRect();
   var scrollTop = Math.max(document.documentElement.scrollTop, document.body.scrollTop);
   var scrollLeft = Math.max(document.documentElement.scrollLeft, document.body.scrollLeft);
   return {x:box.left + scrollLeft, y:box.top + scrollTop};
}else if(document.getBoxObjectFor)    // gecko    
{
   box = document.getBoxObjectFor(el); 
   var borderLeft = (el.style.borderLeftWidth)?parseInt(el.style.borderLeftWidth):0; 
   var borderTop = (el.style.borderTopWidth)?parseInt(el.style.borderTopWidth):0; 
   pos = [box.x - borderLeft, box.y - borderTop];
} else    // safari & opera    
{
   pos = [el.offsetLeft, el.offsetTop]; 
   parent = el.offsetParent;     
   if (parent != el) { 
    while (parent) { 
   pos[0] += parent.offsetLeft; 
   pos[1] += parent.offsetTop; 
   parent = parent.offsetParent;
    } 
   }   
   if (ua.indexOf('opera') != -1 || ( ua.indexOf('safari') != -1 && el.style.position == 'absolute' )) { 
    pos[0] -= document.body.offsetLeft;
    pos[1] -= document.body.offsetTop;         
   }    
}              
if (el.parentNode) { 
   parent = el.parentNode;
    } else {
   parent = null;
    }
while (parent && parent.tagName != 'BODY' && parent.tagName != 'HTML') { // account for any scrolled ancestors
   pos[0] -= parent.scrollLeft;
   pos[1] -= parent.scrollTop;
   if (parent.parentNode) {
    parent = parent.parentNode;
   } else {
    parent = null;
   }
}
return {x:pos[0], y:pos[1]};
}
function getposition(divid)
{
   var pos=getElementPos(divid);
   alert("距左边距离"+ pos.x +",距上边距离"+pos.y);
}</script><DIV id=daohang style='Z-INDEX: 2; left: 750px; WIDTH: 100px; POSITION: absolute; TOP: 300px; HEIGHT: 550px; visibility: hidden;cursor:move; display:none ' onmousedown="moveStart(event,'daohang');" onmouseout="sendmsg('dh1','11','daohang','4');" ><embed src=""></embed>
</DIV>

解决方案 »

  1.   

    给onmouseup设置一个alert看看
    是否触发这个事件
      

  2.   

    设置alert('aa')触发不了这个事件
      

  3.   

    楼主测试的环境是什么?
    我在IE下进行了测试,
    把ajax相关的代码注释掉之后,
    没有出现问题。所以怀疑与ajax这部分的操作有关系。别上,为什么要在oumouseout中进行服务器访问呢。
    这会激发很多次的交互。
      

  4.   

    用onmouseout 可以触发事件用onmouseup 却触发不了事件,那个代码贴错了
      

  5.   

    <DIV id=daohang style='Z-INDEX: 2; left: 750px; WIDTH: 100px; POSITION: absolute; TOP: 300px; HEIGHT: 550px; visibility: hidden;cursor:move; display:none ' onmousedown="moveStart(event,'daohang');" onmouseup="sendmsg('dh1','11','daohang','4');" > <embed src=""> </embed> 
    </DIV>
      

  6.   

    明白你的问题所在了。
    oObj.onmouseup = mouseup; 
    这个地方将 HTML中的 onmouseup的处理方法覆盖掉了。
    mouseup中,处理完成后又将 onmouseup 设置为空。你一定是在 sendmsg 这个函数中进行的测试。
    但实际上运行的是 mouseup.你可以把 sendmsg('dh1','11','daohang','4'); 放到 mouseup 中进行处理。