5

これは、物事の精神に反することを知っている通常の質問よりも少し抽象的ですが、それでも良い回答が得られることを願っています.

これが問題です。PHP で書かれたかなり複雑な Web アプリケーションがあります。目的は比較的重要ではありませんが、簡単に言えば、データをリアルタイムで表示するコントロールをレンダリングするために、Comet / AJAX / JSON / JavaScript / PHP / MySQL (jQuery はありませんが、ネイティブ JavaScript のみ) を使用しています。このアプリケーション全体で、ネイティブ JavaScriptを使用してポップアップ モーダルをレンダリングしています。ページに同じ名前のモーダルが存在するかどうかをテストし、同じ名前の新しいバージョンを作成しないようにするのはかなり複雑なロジックです。もちろん、作成されると、その下のリンクとの相互作用を防ぐためにレイヤーが作成されます。

問題は、AJAX 呼び出しでデータベースからデータを収集して表示用に組み立てるのに時間がかかるため、ページにレンダリングされる前に複数回呼び出すことができるモーダルが少なくとも 1 つあることです。ユーザーが上記のリンクを「ダブルクリック」すると、2 つのモーダルが上下に表示されます。私は実際にこれらの 8-10 をレンダリングすることができました。ユーザーが実際には最下部のモーダルで折りたたみ可能なヘッダーに影響を与えているため、最上位のモーダルとのやり取りが壊れているように見えます。ダイアログ ボックスを閉じ始めて一番下に到達すると、どこをクリックしたかがわかります。

だから、私の問題はこれです:この動作を防ぐ最善の方法は何ですか?

最初のクリックの後にリンクから onClick 属性を削除する関数を onClick イベントに追加するだけで、マイナー タイムアウト (500 ミリ秒など) が発生することを検討しました。また、クリックをカウントし、実際には最初のクリックの後にのみイベントを開始し、モーダルが閉じられたときにリセットするビット テスト ロジックを実装することも検討しました。

私が疑問に思っているのは、誰かが考えや提案を持っているか、同様の問題に取り組み、この場合の私の目標を達成するためのベストプラクティスについて洞察を持っているかどうかです.

どうもありがとうございました。

4

2 に答える 2