WEB相談室

Webページ作成に関しての何でも掲示板です。

タイトル:JavaScriptツリータイプのメニューについて

0:[投稿] keiko [2006/04/07 00:54 ] [環境:IE6,WINxp わからない]

前回、タイトルの件でこちらで質問させて頂いた者です。
http://chaichan.lolipop.jp/qanda/qa6642.htm?06-03-18-22-18
その節にお答え頂いた方々、本当にありがとうございました。
またしても躓いてしまったので、お答え頂けたらと書き込みさせて頂きます。
前回頂いたサンプルなんですが、どうやらmac(OS9)ではうまく作動しないようで、メニューが開けないと言われてしまいました。
こちらのサンプルをmac(OS9)で作動することは不可能なのでしょうか。
どなかたご指南頂けましたら宜しくお願い致します。


1:[回答] miz [2006/04/08 00:01 ]

どこで、どんなエラーが出ているのかをMacを使っている人から教えて貰わないことには対処は困難でしょう。
Mac版 IE はversionが古いので(win IE5.0か5.5相当だったような?)
slice()関数が使えないとかかな?
それとも、classNameのあたり?
それともMac版固有のバグ?
それとも、Safari?

私はwindowsなので、とりあえず考えられるところを挙げるしかできませんが。


2:[回答] 身も蓋もない奴 [2006/04/08 00:17 ]

そもそも “ツリー型” の動的なメニューを採用することで,誰が得をするのでしょうか。

制作する側は,ウェブブラウザなどの実装の違いに悩まされる事になるでしょう。

利用する側からすると,どのように操作するのか分からないとか,
そもそも操作でることに気付かないとか,エラーが生じて操作できないとか,
スクリプトが無効とか,スクリプトが有効でも制作者スタイルが無効とか,
隠されいる状態ではメニューの全体像がつかめないで困るとか,
次回訪れたときにメニューの構造を忘れてしまって目的の場所に辿り着けないとか,
様々な要因で混乱をもたらす事になります。

結局,動的なメニューにしても苦労するだけで,あまり良いことはありません。
通常の静的なメニューが最も理解しやすく,利用しやすいのです。
メニューというものは目的な場所に辿り着くための手段でしかありません。
そんなものに時間をかけるより,メニューの先にある内容に時間をかけるべきです。

とか,身も蓋もない事を言ってみるテスト。まぁ,よく考えてみてよ。


3:[回答] 神崎 [2006/04/09 04:59 ]

> 身も蓋もない事を言ってみるテスト
身も蓋もない言い方をすれば、HTMLは推奨しない。となるんじゃないですか?
プレインテキストなら、タイトルだのヘッダだのを考える必要さえなくなりますし、
どんな環境でもほぼ同じに、しかも閲覧者が自由にフォントも文字サイズも変更出来る、ユーザーに優しいページになりますから。

本題ですが、
MacOS9のどのブラウザを使ってるか、ということにも関係してきます。
classic環境のブラウザでは、DOMに対応していないブラウザも多いので、
MacClassicのJavaScriptを作るなら、IE4やNN3でも動くようなスクリプトを作らないと行けないと思います。

if(document.getElementById){
//DOM用スクリプト
}else if(document.all){
//IE用スクリプト
}else if(document.layers){
//NN用スクリプト
}

とすると、
MacOS X IE5.2はDOM用スクリプトを走らせようとしてエラーになるので、
if (document.all && document.attachEvent){}
でチェックした方が良いです。
ともすればOSやブラウザのバージョンをチェックしないと行けないかも知れませんね。


4:[回答] 徹 [2006/04/09 06:36 ]

チェックするときは実際に使用する関数をチェックすべきであって、
失礼ながら>>3のような分岐は推奨しません。漏れが生じます。

# ただ、関数が存在しても仕様通りの動作をするとは限りませんので
# それが事前に分かっていれば>>4のような分岐でも良いでしょう。
# なお、sliceはJavaScript1.0から存在はしています。

>>0を拝見した所、非script環境にも配慮した作りになっているようですから
DOM1+の実装を持たないブラウザでは初期化せずとも良いのではないでしょうか。
古いブラウザには無理に負荷をかけない方が ;-)


5:[回答] m035 [2006/04/09 14:33 ][URL]

一応、問題のツリーメニューを作ったものですが。
>メニューが開けない
ということはメニューを閉じるのには成功しているんでしょうか?
だとすれば、表示・非表示の関数は同じなので出来るはずなんですが・・・
onclickからの呼び出しが問題でしょうか。
いっそのこと、JavaScriptが有効でもメニューの非表示を
一括で解除できるようにしてみると解決できるかも知れません。
function allopen(){
    for(var i=0;i<menu_len;i++)ch(i,1);
    return false;
}
をscript部分に追加。
そして以下をbody部分に追加。
<form>
<input type="button" value="メニューが閉じているのに開けない方はこちらをクリック(一括開閉)" onclick="allopen()">
</form>

#これで出来ないときはお手上げです。


6:[回答] miz [2006/04/09 19:31 ]

>>4
># なお、sliceはJavaScript1.0から存在はしています。
失礼しました。うろ覚えの情報を書いてしまいました。自分が普段使わないからって。。。
調べ直したらsliceが使えないのは、IE3とかNN3とかでした。

しかし「開けない」とあっりましたが、
onload=function(){} で閉じる方は実行できているのですよね?
やはり、どのブラウザなのかの情報がないことには、、、

回答(必須): 状態:

お名前(必須):

URL:




[戻る]