1

イベントに問題があります。

2つのインターフェイスを作成しました。

export interface IEEvent extends JQueryEventObject, MSEventObj {
    preventDefault: () => void;
    cancelBubble: bool;
}

export interface IEElement extends HTMLElement {
    click: (event?: IEEvent) => void;
    onmousedown: (event?: IEEvent) => void;
    onmousemove: (event?: IEEvent) => void;
    onmouseup: (event?: IEEvent) => void;
}

onmousedown\move\up小道具を設定しようとするとエラーが発生します...

public static StopPropagation(element: HTMLElement): void {
    (<IEElement> element).onmousedown = StopPropagationHandler; // error here
    (<IEElement> element).click = StopPropagationHandler; // error here
    (<IEElement> element).onmouseup = StopPropagationHandler; // error here
}

private static StopPropagationHandler(e?: IEEvent): void {
    if (typeof (e) === "undefined") {
        e = <IEEvent> window.event;
    }
    if (typeof (e.preventDefault()) !== "undefined") { // error here
        e.preventDefault(); // error here
    }
    e.cancelBubble = true;
}

プロパティ

方法

これらのエラーを取り除く方法は?

4

1 に答える 1

1

例外が発生すると、StopPropagationがコールスタックの最上位にあるように聞こえます。デバッガー内でこれを調べると、要素が未定義であると思われます。これを処理するようにコードを修正するか、その場合は例外をスローすることを検討してください。例:

未定義を許可するには:

public static StopPropagation(element: HTMLElement): void {
    if (element) {
        (<IEElement> element).onmousedown = StopPropagationHandler; // error here
        (<IEElement> element).click = StopPropagationHandler; // error here
        (<IEElement> element).onmouseup = StopPropagationHandler; // error here
    }
}

未定義を禁止するには:

public static StopPropagation(element: HTMLElement): void {
    if (!element) {
        throw new Error("Null argument exception. An element must be provided.");

    (<IEElement> element).onmousedown = StopPropagationHandler; // error here
    (<IEElement> element).click = StopPropagationHandler; // error here
    (<IEElement> element).onmouseup = StopPropagationHandler; // error here
}
于 2013-01-15T15:54:05.533 に答える