カラーボックスに似たdiv、iframe、imgを作成して開くモーダルオブジェクトライブラリを作成しようとしています。私はこれを純粋なJavaScriptで行っているので、jQueryはお勧めしません。
問題は、ユーザーがvar myModal = new modal(options、width、height)を使用して新しいモーダルを作成するときに、モーダルがすでに存在するかどうかを確認し、閉じて、アニメーションを閉じるのを待ってから、作成を続行することです。新しいモーダル。私はすでにすべてを行うことができますが、古いモーダルがなくなるまで新しいモーダルを作成するのを待つのに問題があります。webkitTransisionEndとカスタムイベントの発生を認識していますが、それは問題ではありません。実際のコードは、古いモーダルが閉じられるまで待機し、残りの関数を終了し、正しいオブジェクトをユーザーに返すまで待つ必要があります。これが私が試したことのいくつかです:
- アニメーションが終了するのを待ってから新しいモーダルを作成するtransisionEndリスナーを作成します。(これは機能しましたが、ネストされた関数になることを考えると、正しいオブジェクトを返すのは困難です)。
- try、catchブロックを使用します。(これは私の目的では機能しませんでした)
- 再帰関数を使用するのと同じものの無数のバリエーションを使用する
アイデアがあれば、気軽に投稿してください。私はたくさんのことを試しましたが、どうやら私がしなければならないことは1つではありません。ありがとう。
編集:
私はそれを理解することができました。私がしなければならなかったのは、transitionEndリスナーをすでに開いているモーダルにアタッチし、クラスの外部に追加の関数を作成して、同じコンストラクターでモーダルを呼び出すことだけでした。コードは次のようになります。
function create(options, width, height) {
return new modal(options, width, height);
}
function modal(options, width, height) {
if (modal != null) {
modal.close();
modal.addEventListener('webkitTransitionEnd', function() {
create(options,width,height);
});
}
return;
}