2011-01-04 5 views
0
function startstretchright(aObj) { 
    watcherObj = aObj.parentNode.parentNode; 

    var dragWorkspaceDiv = document.createElement("div"); 
    var dragWorkspaceObj = document.body.appendChild(dragWorkspaceDiv); 
    dragWorkspaceObj.id = "dragWorkspace"; 
    dragWorkspaceObj.style.position = "absolute"; 
    dragWorkspaceObj.style.left = "0px"; 
    dragWorkspaceObj.style.top = "0px"; 
    dragWorkspaceObj.style.width = "100%"; 
    dragWorkspaceObj.style.height = "100%"; 
    dragWorkspaceObj.style.cursor = "hand"; 
    dragWorkspaceObj.style.cursor = "pointer"; 
    dragWorkspaceObj.style.background = "#000000"; 
    dragWorkspaceObj.style.filter = "alpha(opacity=1)"; 
    dragWorkspaceObj.style.opacity = .01; 
    dragWorkspaceObj.style.MozOpacity = .01; 
    dragWorkspaceObj.style.zIndex = "400"; 

    addEvent(dragWorkspaceObj, 'mouseup', function() { stopstretching(watcherObj); }); 
    addEvent(dragWorkspaceObj, 'mouseout', function() { stopstretching(watcherObj); }); 
    addEvent(dragWorkspaceObj, 'mousemove', continuestretching); 

    stretchDirection = "right"; 
    initialX = locateObject(aObj).x; 
    initialLeft = watcherObj.style.marginLeft; 
    initialWidth = watcherObj.style.width; 

    watcherObjLeftBoundary = 0; 
    watcherObjRightBoundary = (document.getElementById("dayHeaderContainer").getElementsByTagName("DIV").length * 100); 
    var siblingArr = watcherObj.parentNode.getElementsByTagName("DIV"); 
    var initialLeftEdge = parseFloat(aObj.parentNode.parentNode.style.marginLeft); 
    var initialRightEdge = initialLeftEdge + parseFloat(aObj.parentNode.parentNode.style.width); 
    for (var i = 0; i < siblingArr.length; i++) { 
     if (siblingArr[i].className == "watcher" && siblingArr[i] != watcherObj) { 
      var l = parseFloat(siblingArr[i].style.marginLeft); 
      var r = l + parseFloat(siblingArr[i].style.width); 
      if (r > watcherObjLeftBoundary && r <= initialLeftEdge) { 
       watcherObjLeftBoundary = r; 
      } 
      if (l < watcherObjRightBoundary && l >= initialRightEdge) { 
       watcherObjRightBoundary = l; 
      } 
     } 
    } 
} 

停止ストレッチ機能のMouseUpはIEで動作しない(ため息!!!!)

function stopstretching(watch) { 
    watcherObj = null; 
    removeEvent(document.getElementById("dragWorkspace"), 'mouseup', stopstretching); 
    removeEvent(document.getElementById("dragWorkspace"), 'mouseout', stopstretching); 
    removeEvent(document.getElementById("dragWorkspace"), 'mousemove', continuestretching); 
    var objToRemove = document.getElementById("dragWorkspace"); 
    if (document.all) { 
     var oldLayer = objToRemove.removeNode(true); 
    } else { 
     var oldLayer = objToRemove.parentNode.removeChild(objToRemove); 
    } 

} 

すべてはChromeとFirefoxで素晴らしい作品が、IEでstopstretchイベントが発射されていないと私は持っています

答えて

0

イベントを削除するときには、と同じ、の機能を広告に渡す必要がありますそれです。

あなたが使用されるイベントハンドラを追加する場合:削除するとき、それはあなたが追加ではないですので、だから、(これらの二つが異なる)mouseoutため

mouseupためfunction() { stopstretching(watcherObj); }function() { stopstretching(watcherObj); }を、あなただけのstopstretchingを使用することはできません。たぶん、あなたは

function stopHandler() { 
    stopstretching(watcherObj, stopHandler); 
} 
addEvent(dragWorkspaceObj, 'mouseup', stopHandler); 
addEvent(dragWorkspaceObj, 'mouseout', stopHandler); 

そして

function stopstretching(watch, handler) { 
    watcherObj = null; 
    removeEvent(document.getElementById("dragWorkspace"), 'mouseup', handler); 
    removeEvent(document.getElementById("dragWorkspace"), 'mouseout', handler); 

コードがテストされていないようなものを持つことができますが、私はそれが動作するはずだと思います。

+0

ストレッチを止めるには、オブジェクトをクリックする必要があります:(一口ありがとうとにかく) – ferronrsmith

+0

これは部分的に助けてくれてありがとうD – ferronrsmith

関連する問題