0

マウスをその上に置くと、メイン アプリケーションのウィンドウがアクティブになるという問題があります。

以下の行を使用して、javascript 関数で新しいウィンドウを開いています。

window.open(URL, 'Requests', 'location=no,toolbar=no,status=yes,scrollbars=yes,resizable=yes');

エクスプローラーで新しい IE ウィンドウを開くと、メイン アプリケーションのウィンドウにカーソルを合わせても再アクティブ化されないことに気付きました。この場合でも、メイン ウィンドウは、上記の window.open コマンドによって作成されたポップアップ ウィンドウの "上" に表示されます。

問題はこれです: javascript で「子」ウィ​​ンドウを開くときに、子ウィンドウを親から切り離す方法はありますか?

詳細情報: ユーザーがサブメニューの選択肢を表示するためにメイン メニュー項目をクリックする必要がないように、ActivateOnHover を true に設定して Infragistics WebDataMenu を使用しています。残念ながら、この設定はメニュー バー全体を敏感にさせてしまうため、マウスをスライドさせるとメニューがアクティブになります (悲しいことに、ポップアップがアクティブな場合はウィンドウもアクティブになります)。これは、私が修正しようとしている根本的な動作です。

4

2 に答える 2

2

このwindow.open();メソッドは、呼び出しの戻り値とポップアップ ウィンドウのプロパティを介して、実際には JavaScript を介してのみ関係を共有するポップアップ ウィンドウを作成しwindow.openerます。

必要なのは、「子」ポップアップで作業している間、「親」ページからの対話をロックアウトするモーダル ウィンドウの動作です。

ポップアップに焦点を合わせ、ぼやけをブロックすることで、JavaScript (およびユーザー) と戦うことを試みることができますが、これはユーザーが電子メールなどを読みたいときに気が狂ってしまいます (例: 推奨されません)。

あまり標準的ではない showModalDialog(); を使用することもできます。しかし、サポートは完全なクロス ブラウザにはほど遠いものであり、これを使用しようとすると、新しい問題がたくさん発生します (IE で右クリックできない、IE でズームの問題が発生する、孫のポップアップが表示されないなど) (これもお勧めしません)。

できることは、多くのオンライン写真ビューアーに似た「オーバーレイ」ポップアップを作成することです。最初にマスク (通常は半透明) を重ねて、下のページ コンテンツ全体にマウス/フォーカスをブロックし、それを「ポップアップ コンテンツ」に重ねます。オーバーレイが閉じられた/完了したときにマスクを削除する閉じるオプションを必ず指定してください。

IE6 をサポートする必要がある場合は、iframe shim (必要に応じて Google) も必要になることに注意してください。

多くの UI フレームワークは、このような「ダイアログ」を提供します。(例: jQueryUI)

于 2013-01-08T01:31:04.237 に答える
0

結局、私はこの作品を作ることを断念しました。私がしなければならなかったことは、WebDataMenu から ActivateOnHover をオフにすることであることがわかりました。これはこの質問に答えず、ユーザーがメニューをクリックしてドロップダウンにする必要がありますが、回避策になりました。

于 2013-02-21T16:05:49.643 に答える