ラウンジ(兼FAQ掲示板)

ウィンドウの開閉
過去ログ NO.1096732100
□ やす。 [2004年09月30日03時06分]
ウィンドウを開閉するボタンを作りたくて、以下のスクリプトを書きましたが、うまく動いてくれません。
どこがいけないのかご指摘いただけたらと思いまして、投稿します。
よろしくお願いします m(_ _)m。

−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−

<head><script>
function OpenDen(){
var Den=window.open('
http://penee3.com/denkoh/denkoh.cgi?html','Den','width=480, height=50');}

function Denkoh(){
if (window.Den.closed = false)
{OpenDen();
}
else {
window.Den.close();
}
}
</script>
</head>
<body onLoad="OpenDen();">
<button onClick="Denkoh();" height="20" width="100">電光!を開閉
</body>
□ NXer [2004年09月30日19時44分]
やす。さん、NXerです。
以下の提案をよろしくご検討のほどお願いします。

当方のローカルサーバー上の電光!を単独起動させること
ができました。なお、投稿時にインデントがくずれるかも
しれません。{ }が対応するように編集してお読みください。
-----------------------------
<head><script>

<!--
var Den;

function OpenDen(){
Den=window.open('http://127.0.0.1/~user/denkoh/denkoh.cgi?html','Den','width=480, height=50');
}

function CloseDen(){
if (Den.closed == true){
OpenDen();
}
else {
window.Den.close();
}
}
//--!

</script>
</HEAD>
<BODY>
<BUTTON onclick="OpenDen();" height="20" width="100">電光!開</BUTTON>
<BUTTON onclick="CloseDen();" height="20" width="100">電光!閉</BUTTON>
</BODY>
</HTML>
---------------------------------------------------
参考文献:宮坂雅輝 『javascript handbook』 p.141

ご希望と次の点が異なるかもしれません。
1 ボタンは、開ボタンと閉ボタンを表示する
2 var Den; でopenにもcloseにも共にDenが認識できる
 位置に初期設定する
3 次の式を見てください。
 if (window.Den.closed = false)
  プレビューで出たエラーから演算子の意味の違いに気が付きました。
1) = :代入演算子
2) == :比較演算子

1.1)width=480 とは値480を代入する
 他方
2.1)if (Den.closed == true)
  とは Den.closedの値が真である
 ということ。

なお、一つのボタンで開閉するにはすえぽんさんのツリー式
メニューを参考にしてください。最近インラインフレームで
表示する愚案をラウンジに提案しました。
どうしてもボタン一つで開閉したい、と切望されます場合、
そちらを参考にしてください。たぶん、応用できると思います。
□ やす。 [2004年10月01日12時54分]
NXer さん、こんにちは。 # お久しぶりです(^^;。

はい。
> どうしてもボタン一つで開閉したい
です(^^;。

> 1) = :代入演算子
> 2) == :比較演算子
これ、なぜか Macintosh だとエラーが出てしまうんです。
「オブジェクトではありません」って。
 # でも他が原因ですよね・・・。

> インラインフレームで表示する愚案をラウンジに提案しました。
http://lounge.suepon.com/data/1095565272.html
ですね。
う゛、。
近頃は以前のようなパワーがなくて、演算子などほとんど忘れかけています。

−−−−−
あと、いま考えているのが cookie を使う方法です。

window が開くと、 値 = 1(onLoad で値を 1 にして、window.name = "Den"
window が閉じると 値 = 0(onUnload で値を 0 にする

ウィンドウが開いているのか閉じているのか、は、(ウィンドウ名ではなくて)cookie の値で判断する、ということです。

ただ、cookie に手をつけて挫折していまったことがあって、できるかどうかがちょっと怪しいです。

自己完結のようですみません。
うまくできたら、ラウンジで発表しますですm(_ _)m。
ありがとうございました。
□ NXer [2004年10月01日19時44分]
> 自己完結のようですみません。

やす。さん、「自己完結」ではないようです。電光!がさらに飛躍する
開放型(open-ended)の「どうしたらいか」という質問であったような
気がします。やす。さんが、新たに挑戦されておられるやす。さん
であることが、うれしい限りです。NXerです。

>> どうしても
>です(^^;。

ということで、当方の提案を少しだけ見直したところ、
一つボタンで開閉ができました。
----------------------------------
<!--
var Den;

function OpenDen(){
Den=window.open('http://127.0.0.1/~user/denkoh/denkoh.cgi?html','Den','width=480, height=50');
}
function Denkoh(){       //関数の変更
if (Den.closed == true){  //Macintosh だとエラー? ★ここがポイント★
OpenDen();
}
else {
window.Den.close();
}
}
//--!>
</script>
</HEAD>
<BODY onload= "OpenDen();">   //イベントハンドラーonload
<BUTTON onclick="Denkoh();" height="20" width="100">電光!</BUTTON>
</BODY>
</HTML>
---------------------
やす。さんの原案↓を、やっと生かすことができました。
function Denkoh(){
<BODY onload= "OpenDen();">
<BUTTON onclick="Denkoh();" height="20" width="100">電光!</BUTTON>

ウィンドウズ系では、動作しました。ボタン一つで
Den.closed == true の条件判断もクリアしています。
onload=  やす。さんのお考えどおりに今回このイベントを
使いました。もちろん、マウスクリックで開いている
ウィンドウは、閉じます。また、Den.closedの値が
真(閉じている時は)ウィンドウが開きました(ブラウザーで確認済み)。
以上です。

********************ここから愚論空論笑論**********
実は前回の提案は、やす。さんならメニューに複数の
電光!のウェブページを作成して、ツリー式のメニューを
開くたびごとに、異なるウィンドウで、電光!をサンプルとして
みせる、などのご利用かと考えたからです。

あるいは、メニュー見出しごとに、実用的な電光!をイン
ラインフレームで見せる、ということを考えました。
というのは、これから常時接続の場合、職場や友人間、
家族間などの少人数の間で、電光!が、簡単かつ即時性
のある連絡に利用される可能性が急速に増えるように
感じているからです。チャットでもなく掲示板でもない
「付箋」のような扱いが軽くて、しかし、当人と関係者には意味ある
連絡ノート代わりです。どこかで見たことのある電光!から
ネットライフの定番的cgiになりそうな予感です。

今回成功した(Macでも多分成功する)やす。さんの「電光!開閉」
ボタンを「友達の電光!開閉」「趣味の車の電光!開閉」など複数の
ボタンの設置すれば、かなり新しいタイプのメッセージバーの誕生で
しょうか。

仮に一つの電光!でも、さらに1行追加して、そこに、チャットの
ように現在オンラインの人の名前を表示すれば、チャットにはない
メール、URL、画像の添付より、メッセージの交換の実用的価値は
測り知れないものがあるような気がします。一件落着にしないで
以前にまさるパワーで、更なる可能性を追求してください。
今回の投稿、どうもありがとうございました。
□ やす。 [2004年10月03日00時48分]
こんばんは。   お返事ありがとうございます。

> 一つボタンで開閉ができました。
わーー!
やられた! って感じです(^^;。

> var Den;       僕には、この行がポイントでした。
そうですね、変数を定義しておくだけで良かったのですね。

> //Macintosh だとエラー? ★ここがポイント★
Macintosh でも、大丈夫でした。

> ウィンドウズ系では、動作しました。
なかなか、快適ですねー。
近々、拙僕の電光!紹介ページにスクリプトを載せようと思います。

> 「友達の電光!開閉」「趣味の車の電光!開閉」など複数の
> ボタンの設置
☆!
あー、これも、面白そうです。

しばらく、web制作(という程のモノでもない)から遠ざかっていたんですけど、
今回のことをきっかけに、またいろいろとやっていきます。
どうもありがとうございました。
また、よろしくお願いしますm(_ _)m。

suepon.com | CGI作成/CGI制作 | JavaScript | ドメイン検索 | バナー自動作成 | Google ダンスツール | 松浦亜弥 | H.P.memo | パソコン | ネイル

Copyright (C) 2002 - 2009 suepon , All rights reserved. Powered by CGI Script Market.