私の仕事は、ポップアップ サブメニュー パネルにファイル アップロード フォームを実装することです。私は XmlHttpRequest を使用しているため、ファイルの読み込みが完了/失敗したというイベント ステータスを受け取るまで、そのポップアップを開いたままにしておくことが重要です。Onmouseover
イベントは、onmouseout
ポップアップの表示/非表示に使用されます。「非表示」の場合、ポップアップ パネルは DOM から切り離され、XHR イベントのリスナーとして使用できなくなります。
フォームの [参照] ボタンをクリックすると、ブラウザの上にシステム ダイアログ ウィンドウが開きます。Windows の IE、Chrome、および Firefox では、システム ダイアログはページごとのイベント処理を無効にします。つまり、ページ要素の 1 つでダイアログ ウィンドウの外にマウス カーソルを移動すると、ページはmouseOver
/mouseOut
イベントに反応するようなことをしません。残念ながら、Mac 上の Chrome/Firefox (Safari は問題ありません) の場合、ページ要素はマウス オーバー/アウトに反応します。そして、ポップアップ メニューが閉じられます (ポップアップmouseOut
のイベント ハンドラーが原因) -> XHR 応答が適切に管理されていません。
ポップアップにアップロード フォームが必要であると仮定すると、システムの [ファイルのアップロード] ダイアログ ウィンドウが開いている間、そのパネル/フォームを表示し続ける方法は何ですか? おそらくMac固有のソリューションです。
サンプルコードはここで見ることができますhttp://jsfiddle.net/xqvXG/