3

明示的に、またはイベントが発生したときに呼び出される関数があります。イベントによってトリガーされた場合、そうでなければ有用な値を持つ可能性のある関数パラメーターを無視する必要があります。

オブジェクトがイベントであるかどうかを確認できる信頼できるクロスブラウザの方法はありますか?

Eventこれを使用してきましたが、未定義であるため、IE7 では機能しないことに気付きました。

var view = {
    save: function (data) {
        if (data.constructor === Event.constructor) {
            // It's an event.
        }
    }
};
4

1 に答える 1

2

「貧乏人の」方法は、Event作成方法に関係なく、すべてのオブジェクトが持っている特定のメソッドの存在をチェックすることだと思います。

if (!(typeof data.altKey == "undefined")) {
  // it's an Event
}

編集

preventDefault は IE の一部のバージョンでは受け入れられないため、別のプロパティを使用するようにソリューションを変更しました。実際には、一般的なプロパティはすべて正常に機能するはずです。

于 2013-01-13T04:48:31.913 に答える