@IT会議室は、ITエンジニアに特化した質問・回答コミュニティ「QA@IT」に生まれ変わりました。ぜひご利用ください。
- PR -

appletからの別windowのオープン動作

1
投稿者投稿内容
uzu-uzu
会議室デビュー日: 2009/04/07
投稿数: 2
投稿日時: 2009-04-07 14:33
環境:
 WinXP SP3 IE6,IE7

状況:
 親となるwindowから以下のコードで別windowを開き、フォーカスを与えています。

  var winObj = window.open("hoge.asp");
  winObj.focus();

 Java6u7までは、親windowの上に別windowが表示されフォーカスも与えられていました。

 ところがJava6u10導入以降、親windowの上に別windowが一瞬表示され、その後
 親windowが前面に出てきてしまいました。別windowはタスクバー上で点滅状態に 
 なってしまいました。

やりたいこと、知りたいこと:
 Java6u7までと同じ動作を実現させたい。

その他の情報:
 最終的に別windowを開くコードは上記に挙げた方法で行っていますが、
 そこに至るまでは以下のような少々複雑な構成と手順を踏んでいます。

 別window呼び出し画面構成
 ・フレームによって複数のペインに分けられている。
 ・ページはASP。
 ・内ひとつのペインにAppletが存在。
  ・Appletは「<PARAM>」タグにてJavaScript関数名をパラメータ値として
   受け渡しを行う。
  ・Appletは「mouseDown」イベントを実装。
 ・Appletのあるページは<FORM>タグを用いて onReset イベントを設定。
  ・onResetにて実行される関数は他フレームに実装されている。

 別windowオープン動作手順
  動作場所 動作内容
 ・Html   Appletをクリック。
 ・Applet  mouseDown(Event evt, int x, int y)がコールされる。
        ⇒getParameter()より<PARAM>タグの値を取得。
        ⇒JSObject を用いてAppletが動作しているページ内の
         JavaScriptを実行。
        ⇒実行するJavaScript関数はgetParameter()で取得したタグ値。
         ⇒JSObject.getWindow(this).call(<PARAM>の値, args)
 ・Html   Appletから指定された関数が実行
 ・Html   上記関数内で document.reset(); 実行
 ・Html   他ページの関数内の以下のコードでポップアップ
        ⇒var winObj = window.open(ポップアップ対象ASP);
        ⇒winObj.focus();


何とかJava6u7までと同じように動作させたいと思っています。
無理だとした場合は何故そうなってしまうのか。を知りたいです。
お知恵拝借お願いします。


[ メッセージ編集済み 編集者: uzu-uzu 編集日時 2009-04-07 14:35 ]

[ メッセージ編集済み 編集者: uzu-uzu 編集日時 2009-04-07 14:35 ]
ぴあちゃん
ぬし
会議室デビュー日: 2008/02/07
投稿数: 287
投稿日時: 2009-04-08 01:42
たぶん、小窓が作られる前にフォーカス処理が実行されちゃうんじゃないかな。

setTimeout((function(o) {
return function() {o.focus() }
})(window.open("xxx.asp")), 100);

とかやってみたらどーでしょう?

uzu-uzu
会議室デビュー日: 2009/04/07
投稿数: 2
投稿日時: 2009-04-08 13:26
ありがとうございます。

別windowが背面に隠れ、タスクバー上で点滅する頻度が
だいぶと減りました。


この問題の根本原因はなんなんでしょうか…
JavaのマイナーUpdateの度に動作の検証が必要になるのでは
正直たまったもんではないのですが。
かつのり
ぬし
会議室デビュー日: 2004/03/18
投稿数: 2015
お住まい・勤務地: 札幌
投稿日時: 2009-04-08 14:28
引用:

この問題の根本原因はなんなんでしょうか…
JavaのマイナーUpdateの度に動作の検証が必要になるのでは
正直たまったもんではないのですが。


マイナーアップデートとはいえ、
Java6のu10からは大幅にアーキテクチャが変わりました。

http://java.sun.com/javase/ja/6/webnotes/6u10/plugin2/index.html

Sunは永遠に同じ動作をする保障なんてしていませんので、
バージョンアップへの対応は、自己責任になるかと思いますが、
Javaに限った話ではなく、他の言語のSDKもランタイムも、
大体そんな感じかと思います。
ぴあちゃん
ぬし
会議室デビュー日: 2008/02/07
投稿数: 287
投稿日時: 2009-04-09 01:57
xxx.asp を触れるならば、こいつの onload で window.focus() でもしたら
どーです?

アプレットを onload 前に走らせると重くなると思います。

じゃなければ、少々面倒ですが、xxx.asp を iframe の中に入れちゃう
ってのもひとつの案かと。iframe ならば、リクエストは非同期に出来る
というか、xxx.asp.html の中に iframe src="xxx.asp" とすることで
xxx.asp.html のロード時間を稼ぐことが出来ます。

<applet> じゃないですよね?<object>タグですかね?
まぁ、どっちでもいいのですけど、xxx.asp の中のアプレットを遅延実行
させる(onload で dom で append するのね)ことでも速くすることが
出来ると思います。



1

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