- - PR -
別窓を最前面で表示したい
1
投稿者 | 投稿内容 |
---|---|
|
投稿日時: 2006-02-15 22:56
いつも参考にさせていただいてます。
現在ASP.NETで開発を行っています。 ■■■やりたい事■■■ @ページロードでメイン画面を表示する。 ※データグリッドにデータを表示 Aプレビューボタンをクリックし、印刷プレビュー画面を別窓で表示する。 ※プレビュー画面を最前面で表示 ■■■問題点■■■ NW.focus(); でフォーカスを設定しているのですが、 ロード中は最前面に表示されるものの、ロードが完了すると メイン画面の背面に隠れてしまいます。 どうやったら最前面に表示できるのでしょうか? ご存知の方がいらっしゃいましたらご教授願います。 ■■■ソース■■■ @ページロードイベント Private Sub Page_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load If Not Page.IsPostBack Then '' ボタンに「オンクリックイベントを追加 btnPrev.Attributes.Add("onClick", "javascript:NewOpen()") End If End Sub AHTML <HTML> <HEAD> <script language="javascript"> function NewOpen() { NW=window.open("○○××.aspx","ウィンドタイトル"); NW.focus(); } </script> </HEAD> </HTML> |
|
投稿日時: 2006-02-15 23:25
showModalDialog ではダメでしょうか?
_________________ C# と VB.NET の入門サイト じゃんぬねっと日誌 |
|
投稿日時: 2006-02-16 10:13
はずしてるかもしれませんが、
NW.focus(); の次に self.blur(); をおこなったらどうでしょうか? # 記憶違いかもしれませんが、メイン画面でSmartNavigation=True # になっていると こういう現象が起きたような・・・ # メイン画面でTrueになっていたら、Falseにしたら直るかも [ メッセージ編集済み 編集者: Katze 編集日時 2006-02-16 17:00 ] |
|
投稿日時: 2006-02-17 13:50
私も同じ現象で悩んでいましたが、
別窓表示時に、SmartNavigation=Falseにしたら解決しました! 別画面側で、PageLoad時にテキストボックスにSetFocusして回避してましたが おかげで、スムーズな画面表示になりました。 |
|
投稿日時: 2006-02-18 08:41
じゃんぬねっとさん、Katezeさん、.NetShinさん返信ありがとうございます。
SmartNavigation=trueが原因ですね。。。 SmartNavigation=Falseにすることで window.open("○○××.aspx","ウィンドタイトル"); で問題なく最前面に表示されます。 ただSmartNavigation=Falseにするとポストバック時に 画面がリロードされるためウィンドのスクロールが動いてしまいますよね? ※スクロールバーが初期位置に戻る これはJavaScriptで作りこむことで解決しました。 後でプログラムを紹介させていただきます。 |
|
投稿日時: 2006-02-23 07:12
スマートナビゲーションを使用せず、ポスとバックが発生した場合、画面の位置をキープするJAVAScriptを紹介します。
@BODYにロードとスクロールのイベントを登録する。 <body onload="LoadEvent()" onscroll="ScrollEvent()"> Aフォームの先頭にHidden属性のINPUTコントロールを2つ準備する。 <form> <input type="hidden" id="scrllLeft" runat="server"/> <input type="hidden" id="scrllTop" runat="server"/> Bロードとスクロールのイベントを実装する。formタグの終了直前に挿入する。 <script type="text/javascript"><!-- function LoadEvent() { window.scrollTo(document.all("ScrllLeft").value, document.all("scrllTop").value); } function ScrollEvent() { document.all("ScrllLeft").value = window.document.body.scrollLeft; document.all("scrllTop").value = window.document.body.scrollTop; } --></script> </form> |
|
投稿日時: 2006-02-23 22:24
そのコード、どっかで見たぞ?(笑)
検証コントロールを置くと、body.onload などが検証コントロール用に置き換わるそうなので(未確認)、これではまずいかもしれません。川端さんのサイトにあったんだけど、閉まっているんだよな。。。 おお!こっちに抜き出していました!!→SmartNavigation = True について 最近、「サーバーコントロール」にしてくださっているのを見かけたような気がするんだけどorz |
1