- - PR -
アプレットを含むページをsubmitすると最前面になる
1
| 投稿者 | 投稿内容 |
|---|---|
|
投稿日時: 2003-12-11 15:48
アプレットを含むページを、JavaScriptより定期的にsubmitしたいのですが、
新規で起動したブラウザや他のアプリが前面にある場合、submitで最前面に来てしまいます。 アプレットの作りが悪いのかと思いましたが、中身を全て消しても前面に出てきます。 前面に来ないようにしたいのですが、原因、回避策等ご存知の方がいらっしゃれば、ご教授願います。 ○環境 ・WindowsXP ・SDK1.4.1 ○アプレットソース import javax.swing.JApplet; public class Main extends JApplet { public void init() { } } ○HTMLソース <html> <head> </head> <body bgcolor="white" text="black" link="blue" vlink="purple" alink="red"> <OBJECT classid="clsid:8AD9C840-044E-11D1-B3E9-00805F499D93" name = "AppletTest" width="750" height="750" > <PARAM name="archive" value="AppletTest.jar"> <PARAM name="code" value="Main.class"> <PARAM name="codebase" value="."> <PARAM name="type" value="application/x-java-applet;jpi-version=1.4"> <PARAM name="scriptable" value="false"> <PARAM name="mayscript" value="false"> </OBJECT> <FORM name="actionform"> <INPUT type="text" name="hoge"> </FORM> <SCRIPT language="JavaScript"> var timer1; RefreshON(); function AutoRefresh(){ clearTimeout(timer1); document.actionform.submit(); } function RefreshON(){ timer1 = setTimeout('AutoRefresh()',10000); } </SCRIPT> </body> </html> |
|
投稿日時: 2003-12-12 02:37
ページを新たに読み込んだときに、
javascriptのwindow.blur()メソッドを使うとかじゃダメですかね。 |
|
投稿日時: 2003-12-12 09:35
>ページを新たに読み込んだときに、
>javascriptのwindow.blur()メソッドを使うとかじゃダメですかね。 回答ありがとうございます。 これから外出する事になってしまったので、 戻ったら試してみようと思います。 |
|
投稿日時: 2003-12-13 00:26
帰りました。日付が変わってしまいました・・・
とりあえずJavaScript部分を以下のようにして見ました。 <SCRIPT language="JavaScript"> window.blur(); var timer1; RefreshON(); function AutoRefresh(){ clearTimeout(timer1); document.actionform.submit(); } function RefreshON(){ timer1 = setTimeout('AutoRefresh()',10000); } </SCRIPT> 表示1回目、他画面の裏に回ります。 submit時、他の画面にフォーカスがあると、前面に出てきます。 自分が前面で、フォーカスありの時submitすると、裏に回ります。 このとき、フォーカスがどこかに行きます。 この状態だと、submitしても裏のままです。 他の画面をクリックしてフォーカスを持っている画面があると、前に出てきます。 といった現象になりました。 とりあえず、前面に来ないでsubmitしている状態はあるのですが・・・ 制御できないかはもう少し調べてみます。 |
|
投稿日時: 2003-12-13 03:07
えっと、上のソースだとsubmit時に背後に回るだけですよね。
そうではなくて、onloadでblur()を呼び出したら良いのかなーと。 実際に自分で動きを確かめたわけではありませんが、 ページの再読込時に前面に出てくる仕様のようなので、 その再読込のところを制御してやると良いと思います。 # 説明不足で申し訳ないです… <body onload="self.blur()">といった感じでしょうか。 |
|
投稿日時: 2003-12-15 10:11
返信、遅くなりました。
onloadで行なっても同じ現象になるみたいです。 onfocusの時は一瞬前に出て、後ろに戻ります・・・ フォーカスありの時submitするとフォーカスがどこかに行きます、と書きましたが、 フォーカスを持ったまま裏に行くようです。 >ページの再読込時に前面に出てくる仕様のようなので、 アプレットの仕様ということでしょうか? ドキュメント探しましたが、見つけられませんでした。 URL等、ご存知でしたら紹介して頂きたいのですが・・・ #仕様なら諦めてsubmit以外の方法を考えた方が早いかな・・・ |
|
投稿日時: 2003-12-18 14:55
無理そうなので、アプレットはリロードしない方法を考えてみました。
とりあえずですが、以下の方法でできそうです。 #onBlurでタイマーとめるとかでも良い気がしてきましたが・・・ iframeの中だけsubmitするようにしただけです(^^; ○HTML applet.html ・・・略・・・ <OBJECT classid="clsid:8AD9C840-044E-11D1-B3E9-00805F499D93" name="AppletTest" width="300" height="300" MAYSCRIPT> ・・・略・・・ <iframe name="hogehoge" src="submit.asp" height=300 width=300> </iframe> ・・・略・・・ function AutoRefresh(){ clearTimeout(timer1); hogehoge.document.actionform.submit(); RefreshON(); } ・・・略・・・ ○HTML submit.asp <html> <head> </head> <body> <FORM name="actionform" method="POST" action="submit.asp"> <INPUT type="text" name="hoge1" value=""> <INPUT type="text" name="hoge2" value="<% Response.write Request("hoge1") %>"> </FORM> <SCRIPT language="JavaScript"> top.document.AppletTest.setLabelText(document.actionform.hoge2.value); </SCRIPT> </body> </html> 略ばかりですいません(^^; 回答くださったパルプさん、ありがとう御座いました。 |
1
