- PR -

アプレットを含むページをsubmitすると最前面になる

1
投稿者投稿内容
うぃず
会議室デビュー日: 2003/12/11
投稿数: 7
投稿日時: 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/06/18
投稿数: 59
投稿日時: 2003-12-12 02:37
ページを新たに読み込んだときに、
javascriptのwindow.blur()メソッドを使うとかじゃダメですかね。
うぃず
会議室デビュー日: 2003/12/11
投稿数: 7
投稿日時: 2003-12-12 09:35
>ページを新たに読み込んだときに、
>javascriptのwindow.blur()メソッドを使うとかじゃダメですかね。

回答ありがとうございます。
これから外出する事になってしまったので、
戻ったら試してみようと思います。
うぃず
会議室デビュー日: 2003/12/11
投稿数: 7
投稿日時: 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/06/18
投稿数: 59
投稿日時: 2003-12-13 03:07
えっと、上のソースだとsubmit時に背後に回るだけですよね。
そうではなくて、onloadでblur()を呼び出したら良いのかなーと。

実際に自分で動きを確かめたわけではありませんが、
ページの再読込時に前面に出てくる仕様のようなので、
その再読込のところを制御してやると良いと思います。

# 説明不足で申し訳ないです…

<body onload="self.blur()">といった感じでしょうか。
うぃず
会議室デビュー日: 2003/12/11
投稿数: 7
投稿日時: 2003-12-15 10:11
返信、遅くなりました。

onloadで行なっても同じ現象になるみたいです。
onfocusの時は一瞬前に出て、後ろに戻ります・・・

フォーカスありの時submitするとフォーカスがどこかに行きます、と書きましたが、
フォーカスを持ったまま裏に行くようです。

>ページの再読込時に前面に出てくる仕様のようなので、

アプレットの仕様ということでしょうか?
ドキュメント探しましたが、見つけられませんでした。
URL等、ご存知でしたら紹介して頂きたいのですが・・・

#仕様なら諦めてsubmit以外の方法を考えた方が早いかな・・・
うぃず
会議室デビュー日: 2003/12/11
投稿数: 7
投稿日時: 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

スキルアップ/キャリアアップ(JOB@IT)