0
function ganttChart(gContainerID) {

    this.gContainer = document.getElementById(gContainerID); 
    this.gCurrentMouseX;
    this.gCurrentMouseY;

    this.gAttatchMove = function(self) {

        self.gContainer.onmousemove = function() {


            if (self.gIsDraggingBar) {

                self.gUpdateMousePos();
                self.gBarBeingDragged.style.left = (self.gBarStartX - (self.gMouseStartX - self.gCurrentMouseX)) + "px";
            }

        };

        self.gContainer.onmouseup = function() {
            self.gIsDraggingBar = false;
        };

    }
    var self = this;
    this.gAttatchMove(self);

   // Update mouse coords
    this.gUpdateMousePos = function(evt) {
        if (window.event) {
            this.gCurrentMouseX = event.x;
            this.gCurrentMouseY = event.y;
        }
        else {
            this.gCurrentMouseX = evt.x;
            this.gCurrentMouseY = evt.y;
        }
    }

これはChromeでは正常に機能しますが、FFはエラーをスローします。

evtは未定義です

4

1 に答える 1

1

mousemoveイベントをに渡す必要がありますthis.gUpdateMousePos()

self.gContainer.onmousemove = function(evt) {
    if (self.gIsDraggingBar) {
        self.gUpdateMousePos(evt);
        // And the rest follows here
    }
};

IEは、を介して現在のイベントのみを提供しwindow.eventます。Firefoxは、イベントハンドラー関数に渡されたパラメーターを介してのみそれを提供します(これは渡さなかったため、エラーになります)。ChromeとSafariは両方を実行します(したがって、Chromeではエラーは発生しません)。

于 2010-12-06T16:56:58.350 に答える