WEB相談室

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

タイトル:OSとブラウザバージョンでの振り分けについて

0:[投稿] Rei [MAIL] [2005/06/04 23:20 ][環境:IE6,WinXP Mozilla/4.0,CGI,perl]

function jump1(id) {
 if (navigator.appName == "Netscape"){
 if (navigator.appVersion.indexOf("Mac") != -1)
    location = "index0.html";
    else if (navigator.appVersion.indexOf("Win") != -1){
      if (parseInt(navigator.appVersion) >= 5)
     location = "index.html";
     else location = "index1.html";
            }
         else location = "index0.html";
    }
   else if (navigator.appName == "Microsoft Internet Explorer"){
     if ((navigator.appVersion.indexOf("Mac") != -1))
     location = "index1.html";
     else if (navigator.appVersion.indexOf("Win") != -1)
       location = "index.html";
       else location = "index1.html";
       }
    else location = "index0.html";
}

呼出方 <A HREF="javascript:jump1('file1')"
(呼出側にtarget="_top"をつけると、ローカル環境では動きますが、アップロード後は動きません)

フレーム処理をしている中で、target="_top"のように全体を切り替えるにはどうしたら良いのでしょうか?

単体ファイル内であれば動きます。しかし、フレーム内のファイルから処理をさせようとするとエラーになってしまいます。

どうぞよろしくお願い致します。


1:[回答] ふたばマーク [2005/06/05 07:30 ]

まだまだ?、もう?「ふたばマーク」です。
parent.framename.location.href = "****.html";
top.window.location.href = "****.html";
上記の2行が参考になれば幸いです。


2:[回答] Rei [2005/06/05 11:26 ]

ふたばマークさん、ありがとうございました。

top.window.location = "****.html";

にする事で無事動きました。(動いた時は感無量)
ご助力に感謝致します m(_ _)m

今後の参考にもう一つ教えて頂けませんでしょうか。

「.href」を省略しても今回動きましたが、これは付け
た方が良いものなのでしょうか?


3:[回答] ふたばマーク [2005/06/05 13:06 ]

ふたばマークなので・・・・?
以前、javascriptの参考書で読んだ記憶によると
locationにurlを指定して動かない場合、location.hrefとすれば
解決するようなことが書かれていたような?
ふたばマークも2つに付けないといけない状態なので
正確なことは返答出来ません。申し訳ない。


4:[回答] Rei [2005/06/05 15:49 ]

ふたばマークさん、お答えありがとうございました。

自身の知識レベルが低いので、また初歩的な事をお聞き
するかもしれませんが、その節はよろしくお願い致しま
す。

ここは良いサイトですね。自分もここでみっちり勉強さ
せて頂くつもりです。(目指せ初心者マーク)


5:[質問] Rei [2005/06/10 14:52 ]

上記スクリプトを使用していたところ、WindowsのIE及びネットスケープ,Firefoxでは動作するのですが、MacのIEでは動作しないと判りました。(Macのネットスケープ,Safariは正常に動くようです)

自分なりに調べて試しましたが、上手く分岐出来ずにいます。MacIEを分岐するには、どのようにしたら良いのか教えて下さい。

−分岐目的−
Macは全て「index0.html」へ
WinIE4以上、NN7、Firefoxは「index.html」へ
WinIE4以下、NN4.0x以下は「index1.html」へ
上記に当てはまらないOSは「index0.html」へ

よろしくお願い致します。


6:[回答] 元帥 [MAIL] [URL] [2005/06/10 23:34 ]

ブラウザのユーザーエージェントを取得するプロパティ
navigator.userAgent
というのがあります。

Mac+IEなら
Mozilla/4.0 (compatible; MSIE 5.23; Mac_PowerPC)

WinXP+Operaなら
Opera/8.0 (Windows NT 5.1; U; ja)
Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1) Opera 7.53  [ja]

といった感じで取得できますので、Macという文字が含まれているか否かを調べるのがよろしいでしょう。
私はMacは持っていませんが、多分動作すると思います…

CGIで使用される環境変数HTTP_USER_AGENTと同じものなので、どのような値が取得されるか、そちらの方からも調べる事ができます。


7:[質問] Rei [2005/06/11 08:01 ]

元帥さん、お答えをありがとうございます。

function jump1(id) {
 if (navigator.appName == "Netscape"){
    if (navigator.userAgent.indexOf("Mac") != -1)
      top.window.location.href = "index0.html";
      else if (navigator.userAgent.indexOf("Win") != -1){
    if (parseInt(navigator.appVersion) >= 5)
      top.window.location.href = "index.html";
          else top.window.location.href = "index1.html";
            }
 else top.window.location.href = "index0.html";
    }
 (IE部分も同じ)

と変えてみました。ローカル環境では動いていますが、Macは
手元に無いので解かりません。
連絡を下さった方は現在諸事情で見る事が出来ない状態にあり、
分岐されているかどうかは不明となっています。

質問に次ぐ質問で申し訳ありませんが、このスクリプトを複数回呼ばれた場合に同じコードを再実行しないようにするにはどうしたらいいのでしょうか?

自分なりに調べたのですが、初心者では理解が難しく上手く動作
させる事が出来ません。「function jump1(id) { 」以下に

if(??????) return;
??????=1;

を入れたら…と思うのですが、どのように書けば正常に動くのか
を教えて下さい。

皆様のご協力にとても感謝しております。どうぞよろしくお願い致します。


8:[回答] ふたばマーク [2005/06/11 08:35 ]

古籏 一浩 著 「速効!図解プログラミング JavaScript」
で解説されている内容が参考になれば幸いです。
http://www.openspc2.org/zukai/Chapter21/index.html


9:[回答] ふたばマーク [2005/06/11 08:42 ]

訂正
「古籏 一浩 著」を改め「古籏 一浩 氏  著」
「速効!図解プログラミング JavaScript」に未収録分として 「ブラウザ別に違うページを表示する(中級編)」
http://www.openspc2.org/zukai/Chapter21/index.html


10:[完了] Rei [2005/06/22 01:43 ]

調べていて間がかなり空いてしまいました。
返事が遅くなってすみません。

ふたばマークさん、ありがとうございました。
ようやく動くようになりました。

回答(必須): 状態:

お名前(必須):

e-mail:

URL:




[戻る]

ChaichanPAPA's World