window.focusを使わずにHTMLを出力したい

[上に] [前に] [次に]
みんこ 1998/11/04(水) 17:14:11
壁紙のサンプルを元ウィンドウで表示して、

その壁紙を実際に使用した画面を別ウィンドウで出したいと思って、

スクリプトを作りました。でも、window.focus()を使うので

IE3.0ではどうしてもエラーになります。

フレームだとエラーを起こさないでできるんですが、

同じ事をwindow.focus()を使わないでできないでしょうか。


ちなみに、今書いているのはこんな感じです。


<SCRIPT LANGUAGE="JavaScript">

<!--

function mihon(bg) {

w = window.open("view.html","haikei","status=0,resizable=no,scrollbars=no,width=200,height=200");

w.focus();

w.document.open();

w.document.write("<html><head><title>背景見本</title></head>");

w.document.write('<body background="kabegami/'+bg+'">');

w.document.write("<center>");

w.document.write("<font color=#000000>"+bg+" </font><P>");

w.document.write("<font color=#ffffff>"+bg+" </font>");

w.document.write('<form><input type="button" value="CLOSE" onClick="window.close()"></form>');

w.document.write("</font></center></body></html>");

w.document.close();

}

-->

</SCRIPT>


分かりましたら教えて下さい。

omi 1998/11/05(木) 01:30:29
全然分かってないし、IE4 しかないんで、答えられないけど。
これは、使えるコードですね。 φ(..)メモメモ
//w.focus();
//-->
で、すこぶる快調ですよ。


みんこ 1998/11/05(木) 10:17:37
[[解決]]
>//w.focus();
>//-->

...そうでした。コメントのスラッシュ忘れてました。
他にもなんだかあやしげな文章になってるところが。(見なかったことにして下さい)

で、
//w.focus();と入れてみたところ、動きましたー!!
但し、この時点ではファイルview.htmlの中身がかなり反映されてました。
(タイトルや中の文章がダブって表示されていた)
そこで、window.open("","haikei"〜)
としてみたところ、きちんと表示されました。ばんざい。

しかし、//入れて通用するならw.focus();の意味って一体。
でも動いたから今は何でもいいですー。

ありがとうございました!
(で、他の環境で動かなかったらどうしましょう)

mstk 1998/11/05(木) 10:55:05
あ、もう解決してる(笑)
同じようにやって解決しました。OKっすね。

w.〜で、出力先のウィンドウを指定しているんだから
w.focus();はいらないような気がします。
そもそも、forcus()ってフォームの入力エリアやボタンなどに
フォーカスを与えるためにつかうのではなかったかな?

#上のomiさんの顔文字面白いけど半角カナは要注意でっす

各ブラウザ上で動作するJavaScriptのサンプルは、
http://www2f.biglobe.ne.jp/~takan/javac/index.html
ここが結構充実してると思います。ご参考までに。

みんこ 1998/11/05(木) 12:08:02
>w.focus();はいらないような気がします。

ですね。「?」と思って削除してにましたが何の問題もありませんでした。
(じゃあ私の質問の意味って。)

以前の質問で、別ウィンドウを開いて説明文を流し込むスクリプトがあって、
それにw.focus();がついてたのでいるのかな〜と思って書いたんですが。
フォーカスの意味を調べてみたら、なんかやっぱり要らないような
気がします。根本的に単語の意味が理解できてないのですが、
新しく開いたウィンドウでは別にイベントは起こしてないですし。

ちなみにWinIE4.0でも動いてました。

Tiot 1998/11/05(木) 12:41:55
windowName.focus()で特定のウィンドウ(windowName)に
focusをあてます(前にでる)。
以前に開いたウィンドウを前に出したいときなど。

mstk 1998/11/05(木) 12:51:03
>以前に開いたウィンドウを前に出したいときなど。
なるほど、Windowにforcusをあてると前にでるのですね。
勉強になります。

みんこ 1998/11/05(木) 15:43:40
>windowName.focus()で特定のウィンドウ(windowName)に
focusをあてます(前にでる)。

もうすこし詳しく教えて下さい。
やってみたけど分かりませんでした。

mstk 1998/11/05(木) 18:51:31
下のfunctionを追加して

function frontwin(bg) {
//openしなくてもいい書き方知ってる人がいたら教えて欲しい・・・
w = window.open("",bg);
w.focus();
}


こうやって呼びだしてみたら、
<A HREF="javascript:frontwin('haikei');">VIEW</A>

たしかにWindowが前に出るようですね。
ただしWinIE3はエラーが出るのでダメですが。
また、MacIE3 MacIE4ではfocus()しなくても、openしたときに
前に出てしまうようです。
NC4はMac WinともOK、かな。
それ以外は試してないです。

mstk 1998/11/05(木) 19:23:19
自己レスですが、
>//openしなくてもいい書き方知ってる人がいたら教えて欲しい・・・
>w = window.open("",bg);
>w.focus();

下のやり方でOKです。
w.name = bg;
w.focus();

だいたい、openしたら、ウィンドウが開いていないときには、
空のウィンドウが開いてしまうものねぇ・・・
失礼しました。

Tiot [HomePage] 1998/11/05(木) 19:41:19
w = window.open("", name);
でウィンドウを開いたとします。
その後に、他のウィンドウを開くなり何なりして、後ろにいってしまったウィンドウwを
前に出したいときに
<input type="button" onClick="w.focus()">
とか言うボタンをつけて押させればウィンドウwが、再び前に出てきます。
もちろん、イベントハンドラだけでなくて、別の使い方もできると思います。
いくつもウィンドウを出してなにか処理した後、特定のウィンドウを前に出すとか。

ぱっと思い付く使い方は、複数のウィンドウをあらかじめ開いて、
windowName.focus()をsetTimeout()で制御し
ぱらぱら漫画の要領でプレゼンテーションを作るとか。
リレー方式でやってもいいかもしれませんが、読み込みに時間がかかるので。
#あらかじめキャッシュしておくよい方法があるかもしれません。

みんこ 1998/11/06(金) 09:33:32
[[解決]]
できました。ありがとうございました。
でもやはりMacIE3.0ではエラーが。(問題が元に戻ってしまいました)

普通に、w = window.open()の後にw.focus();つけたらウィンドウを
読み込む毎に前に出ました。
これはバージョンチェックして書くしかないですね。

>ぱっと思い付く使い方は
バトルカードゲームとかじゃんけんとか、なんかそんな感じで
使えそうですね。

[上に] [前に] [次に]