selectで、訪問済を表現するには?

[上に] [前に] [次に]
ごず 2000/05/25(木) 23:12:30
左フレームのselectボックスで右フレームのページの
htmlを選ぶものを作っています。

結構、ページが多いので、
一度訪れたところの表示を変えたいのですが、良い方法はありませんか?
今のところ、私が思い付くのは、
onChangeイベントで、optionのvalueに"訪問済み"等の文字列をくっつける
方法か、
onChangeイベントで、
optionのスタイル(color)を変更するか、

と行ったところなのですが、ほかに、もっとシンプルで、
見た人がわかりやすいよう方法はありませんか?

アンカーでいうとvisitedの状態をうまくoptionで表現したいのですが..
出来れば、普通のアンカーのvisitedみたいに次に訪れたときも
表示が変わってくれるとうれしいのですが、
確か、optionのなかに<a>タグはだめですよね?
どなたか良いお知恵を貸してください。
よろしくお願いします。

ヨシダ 2000/05/26(金) 10:25:08
フレームを使っているなら、

> onChangeイベントで、
> optionのスタイル(color)を変更するか、

で、いけるんじゃないでしょうか?
style.colorや、style.backgroundとか色々試して、
分かりやすいと思えるものを選ばれては如何でしょうか?
(この方法はもちろんユーザの環境を選びますが)

> アンカーでいうとvisitedの状態をうまくoptionで表現したいのですが..
> 出来れば、普通のアンカーのvisitedみたいに次に訪れたときも
> 表示が変わってくれるとうれしいのですが

これは、cookieを使うしかないのでは?
でも、それだけのためだけにcookieを一々食わせるのもどうかと思いますが。


> と行ったところなのですが、ほかに、もっとシンプルで、
> 見た人がわかりやすいよう方法はありませんか?

select内の訪問済みの項目の色を変えても、その様な事は普通は起きないから
ユーザがそれを訪問済みの印と受け取るかどうか?とか思います。
上手くそれを表現出来ないのならば、
「訪問済を表現したい」という点から見た時、素直に普通のリンクにした方がいいような気もします。

ヨシダ 2000/05/26(金) 10:28:00
↑変な日本語ですね。。

shingo [E-Mail] [HomePage] 2000/05/26(金) 11:34:14
もし、私がそれを実現するとしたら・・・ 

・ページのどこかに、optionで飛ぶ先のアドレスのdisplay:noneな
テキストリンクをつくり、CSSで表示済みと未表示のcolorをそれぞれ
違う色に決めておく。(たとえば、optionにa.htmlとb.htmlに飛ぶ
よう設定しているなら、この二つのリンクをテキストで作る。)

・テキストリンクのオブジェクト.currentStyle.colorがどっちの
色かをみることで、表示済みかそうでないかがわかるので、スクリプト
でそれにあわせてoptionの色を変える。


これなら、リンク先で特別な事を何もしなくても表示済みかどうかを
判別できます。

ごず 2000/05/26(金) 19:43:04
みなさんお世話になります。
>shingoさんへ
ありがとうございます。
なるほど、そうすれば、Cookieを使うことなく訪問済みかどうか
わかるわけですね。

このスタイルの情報は、たとえば、
if(省略.currentStyle.color=="green"){
   該当するoptionのスタイル変更処理;
}
のような記述で比較できるのですか?


それと、2重質問で申し訳ありませんが、
それこそ、リンクオブジェクトが、visitedかどうかという
プロパティーは、存在しないのでしょうか?
よろしくお願いします。

つまり、
if(オブジェクト.??.visited == true ){
   処理;
}
といったようなプロパティーがあるとうれしいのですが..

mic 2000/05/26(金) 22:39:46
一番最初んとこ
>onChangeイベントで、optionのvalueに"訪問済み"等の文字列をくっつける
>方法か、
valueで出来るんだっけ?
自信無いけどinnerTextとかかな?
タイムリーじゃなくてわるいっす。
ども

shingo [E-Mail] [HomePage] 2000/05/26(金) 23:52:21
>このスタイルの情報は、たとえば、
>if(省略.currentStyle.color=="green"){
>   該当するoptionのスタイル変更処理;
>}
>のような記述で比較できるのですか?

そのとおりです。色が表示済みに設定されているものであるなら、
過去に表示済みと判断できます。

>それと、2重質問で申し訳ありませんが、
>それこそ、リンクオブジェクトが、visitedかどうかという
>プロパティーは、存在しないのでしょうか?
>よろしくお願いします。

これは、ユーザのプライバシーの一部と考えられます。そのため、
オブジェクトとしては存在しません。ですから、わざわざ対象と
同じアドレスのリンクを作り、その色を見ているのです。

ちなみに、この方法で、ビジターがあるサイトを訪れたかどうかを
知ることが出来てしまいます。あまり広まるとcurrentStyleで取得
できない対策が施される、なんてこともあるかもしれませんね。

ヨシダ 2000/05/27(土) 14:03:09
うぉっ!なるほど。 shingoさん、すごいっす。
「cookie使うしかないのでは?」なんて嘘書いてすみませんでした。

> valueで出来るんだっけ?
> 自信無いけどinnerTextとかかな?

<option>にidをつけて、
  document.all(〜).innerText+='訪問済み';
NN6/Mozillaなら、
  document.getElementById(〜).firstChild.appendData('訪問済み');
とかで出来るはず・・ と思います。

ごず 2000/05/29(月) 11:57:46
>これは、ユーザのプライバシーの一部と考えられます。
なるほど、いわれてみると...
>あまり広まるとcurrentStyleで取得
>できない対策が施される、なんてこともあるかもしれませんね。
これも、納得。うーむ....すごい。

ごず 2000/05/29(月) 12:04:26
[[解決]]
>micさん
ご指摘ありがとうございます。そのとおりでした。
>shingoさん
すばらしいご意見ありがとうございました。
>ヨシダさん
さっそく作ってみたところ、思い通りのものが出来ました。
それと、
>select内の訪問済みの項目の色を変えても、その様な事は普通は起きないから
>ユーザがそれを訪問済みの印と受け取るかどうか?とか思います。
>上手くそれを表現出来ないのならば、
>「訪問済を表現したい」という点から見た時、素直に普通のリンクにした方がいいような気もします。
これも、一考を要しますね。もう少し、妥当な表現を検討する必要がありますね。
(反省...)
大変参考になりました。
ありがとうございます。

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