• 締切済み
  • すぐに回答を!

javascriptで別ページに・・・ 続編

こんにちは。 前回質問させて頂いた事で、特定のユーザーエージェントからのアクセスを任意の別ページに飛ばす方法に成功しました。 下記がそのソースです。 このソースの例では、Internet ExplorerからのアクセスをヤフージャパンTOPページに飛ばす方法です。 ------------------- <script type="text/javascript"> <!-- document.write('<p>ブラウザの判別:'); if(navigator.userAgent.indexOf("Opera") != -1){ // 文字列に「Opera」が含まれている場合 document.write('あなたのブラウザは Opera ですね?'); } else if(navigator.userAgent.indexOf("MSIE") != -1){ // 文字列に「MSIE」が含まれている場合 location.href="http://www.yahoo.co.jp/"; } else if(navigator.userAgent.indexOf("Firefox") != -1){ // 文字列に「Firefox」が含まれている場合 document.write('あなたのブラウザは Firefox ですね?'); } else if(navigator.userAgent.indexOf("Netscape") != -1){ // 文字列に「Netscape」が含まれている場合 document.write('あなたのブラウザは Netscape ですね?'); } else if(navigator.userAgent.indexOf("Safari") != -1){ // 文字列に「Safari」が含まれている場合 document.write('あなたのブラウザは Safari ですね?'); } else{ document.write('判別できませんでした。'); } document.write('</p>'); // --> </script> ----------------------------------- これに対して追加質問させて頂きます。 (1)ユーザーエージェントの指定が上記のままではInternet Explorer利用者の全員が対象になってしまうので、さらにUAを絞り込んで、 例 Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; Trident/4.0; Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 6.1; SV1) ↑この様に、より長く具体的に絞り込んでUAを指定する事は不可能でしょうな。 自己のアクセス解析で得られた情報を記述してテストしましたが、成功しませんでした。 半角や全角の違いか?それともスペースに問題があるのか分かりません。 (2)上記の例では、ユーザーエジェントで判定しておりますが、ホストで判定する事は不可能でしょうか。 自己の場合の「softbank***********.bbtec.net」でテストしましたが、やはり成功しませんでした。 お手数ですが宜しくお願いします。

共感・応援の気持ちを伝えよう!

  • 回答数1
  • 閲覧数164
  • ありがとう数1

みんなの回答

  • 回答No.1
  • fujillin
  • ベストアンサー率61% (1594/2576)

userAgentは普通の文字列になっていますので、情報が存在する範囲であれば、いかようにも判別可能かと思います。 少々、情報が古いきらいはありますが、雰囲気を掴むには以下のあたりが参考になるかと。 (layersやallなどあまり御使用を進められない方法も載ってはいますが…) http://www.fureai.or.jp/~tato/DHTML/simple/part4/tips/browschk.htm クライアント側で処理をするのなら、そこのリンクにこのようなものも… http://www.fureai.or.jp/~tato/DHTML/simple/part4/tips/brwenv.htm

共感・感謝の気持ちを伝えよう!

関連するQ&A

  • SafariのIframeで高さが取得できません

    <script language="JavaScript"> <!-- function frame_check(){ if(main.document.body){ if(navigator.userAgent.indexOf("Opera") != -1){ // 文字列に「Opera」が含まれている場合 var f = main.document.body.scrollHeight; } else if(navigator.userAgent.indexOf("MSIE") != -1){ // 文字列に「MSIE」が含まれている場合 var f = main.document.body.scrollHeight; } else if(navigator.userAgent.indexOf("Firefox") != -1){ // 文字列に「Firefox」が含まれている場合 var f = main.document.body.offsetHeight; } else if(navigator.userAgent.indexOf("Netscape") != -1){ // 文字列に「Netscape」が含まれている場合 var f = main.document.body.offsetHeight; } else if(navigator.userAgent.indexOf("Safari") != -1){ // 文字列に「Safari」が含まれている場合 var f = main.documentElement.offsetHeight; } if(f) document.getElementById("frame_set").height=f+20; setTimeout("frame_check()",100); }else{ setTimeout("frame_check()",100); } } setTimeout("frame_check()",10); --></script> <iframe name="main" id="frame_set" src="mainf.html" width="800" height="4000" frameborder="0" scrolling="no"></iframe> 上記のスクリプトを作成しましたが、IE7、 Firefoxではうまくいきますが、SafariではIframeに表示するページの高さが取得できません。 どこが問題なのかご教授お願いいたします。

  • Safariを判別し別ページに飛ばすには

    javascriptでブラウザを判別して、ブラウザによって違うページに飛ばしています。 基本的にはIEとそれ以外なのですが、Safariだけが別ページに飛んでくれません。(index.htmlにいたままになる) 下記のようにしていますが、どうすれば飛ぶようになるでしょうか? よろしくお願いします。 <script type="text/javascript"> if(navigator.userAgent.indexOf("MSIE") != -1){ window.location.href = "index.html";}     : else if(navigator.userAgent.indexOf("safari") != -1){ window.location.href = "index2.html";} </script>

  • Macfirefox3とMacfirefox2以下でCSSを切り替えたい

    MacのFirefox3は、Firefox2までとはデフォルトフォントサイズが 違うので、Firefox3とそれ以外のFirefoxで分けたいです。 今まで、CSSを以下のスクリプトでブラウザ別に分岐していました。 MacのFirefox3の分岐を増やしてみたのですが、それ以外のFirefoxのCSSに 分岐されてしまいます。 あまりJavascriptに明るくないので、 どうしてわかれてくれないものか困っています。 どうぞお知恵をお貸し下さい! ↓以下、かいてみたソースです。 var Win=(navigator.userAgent.indexOf("Win")!=-1); var Mac=(navigator.userAgent.indexOf("Mac")!=-1); var Explorer=(navigator.appName.indexOf("Explorer")!=-1); var Firefox=(navigator.userAgent.indexOf("Firefox") !=-1); var Netscape=(navigator.appName.indexOf("Netscape")!=-1); var opera=(navigator.userAgent.indexOf("Opera")!=-1); var safari=(navigator.userAgent.indexOf("Safari")!=-1); var Version=navigator.appVersion.charAt(0); if(safari){ document.write('<LINK rel="stylesheet" href="/css/mac_safari.css" type="text/css">'); } else if(Win && Explorer && Version=="6"){ document.write('<LINK rel="stylesheet" href="/css/win_ie.css" type="text/css">'); } else if(Win && Firefox){ document.write('<LINK rel="stylesheet" href="/css/win_ie.css" type="text/css">'); } else if(Win && opera){ document.write('<LINK rel="stylesheet" href="/css/win_ie.css" type="text/css">'); } /*増やしたところ*/ else if(Mac && Firefox && Version=="3"){ document.write('<LINK rel="stylesheet" href="/css/mac_safari.css" type="text/css">'); }/*増やしたところ終わり*/ else if(Mac && Firefox){ document.write('<LINK rel="stylesheet" href="/css/mac.css" type="text/css">'); } else if(Mac && opera){ document.write('<LINK rel="stylesheet" href="/css/mac_safari.css" type="text/css">'); } else if(Win && Netscape && Version=="4"){ document.write('<LINK rel="stylesheet" href="/css/win_nn.css" type="text/css">'); } else if(Mac && Explorer && Version=="5"){ document.write('<LINK rel="stylesheet" href="/css/mac_safari.css" type="text/css">'); } else if(Mac && Netscape && Version=="7"){ document.write('<LINK rel="stylesheet" href="/css/mac.css" type="text/css">'); } else if(Mac && Netscape && Version=="4"){ document.write('<LINK rel="stylesheet" href="/css/mac.css" type="text/css">'); } else{ document.write('<LINK rel="stylesheet" href="/css/font.css" type="text/css">'); }

  • ブラウザで表示を変更

    <SCRIPT TYPE="text/javascript"> <!-- if (navigator.userAgent.indexOf("MSIE")!="-1"){//for IE document.write("インターネットエクスプローラー"); } else { document.write("別ブラウザ"); } //--> </SCRIPT> 上記JavaScriptと同じように、インターネットエクスプローラーとそれ以外のブラウザで表示させるメッセージを変えたいのですが、どのように書けばいいのでしょうか。

    • ベストアンサー
    • Perl
  • IEのバージョンが7以下の際。ポップアップ表示

    こんにちわ。 今回やりたいことは、JavaScriptを使って、ブラウザのバージョンを判別し、メッセージウィンドをポップアップさせたいと思っています。 いかんせん、やっと最近HTMLとCSSの使い方がわかってきた程度で、JavaScriptは初心者です。(プログラム自身はVBAなどでそこそこ作っているので、なんとなくやり方はわかるんですが、実装が全く分かりません) 以下のようなサイトを見つけました。 http://jisakupc-technical.info/programing/javasc … 【以下ページ内のプログラム】 // ブラウザのUAを小文字で取得 var userAgent = window.navigator.userAgent.toLowerCase(); // IEの判定 var isIE = (userAgent.indexOf('msie') >= 0 || userAgent.indexOf('trident') >= 0); // IEのバージョンを取得 if (isIE) { // 正規表現によりUA文字列を配列に分割 var arr = /(msie|rv:?)\s?([\d\.]+)/.exec(userAgent); version = (arr) ? arr[2] : ''; return 'ie'+version; } else { // IE以外のブラウザ判定 if (userAgent.indexOf('chrome') != -1) { /* Google Chrome. */ return 'chrome'; } else if (userAgent.indexOf('firefox') != -1) { /* FireFox. */ return 'firefox'; } else if (userAgent.indexOf('safari') != -1) { /* Safari. */ return 'safari'; } else if (userAgent.indexOf('opera') != -1) { /* Opera. */ return 'opera'; } else if (userAgent.indexOf('edge') != -1) { /* Edge. */ return 'edge'; } else if (userAgent.indexOf('gecko') != -1) { /* Gecko. */ return 'gecko'; } else { return false; } } 分からないのが、Returnで返り値を返していますが、「どこ」に返しているのでしょうか? HTML構文内? この辺の、JavaScriptとHTMLの関連性がよく理解できていません。 最終的にやりたいのは、ブラウザがIEでかつ7以下もしくはIE8以上だが互換表示モードだとポップアップをさせたいということです。 何か良いアドバイスを頂けると大変助かります。

  • ブラウザによるCSSの切替スクリプト

    ブラウザによるCSSの切替スクリプトを作りましたが上手くいきません。 ====css.js====================================================== function browserCheck(){ //変数myBrowにユーザの環境を代入 myBrow = navigator.userAgent; //変数myBrowに文字列Operaが入っていた場合(Opera)の処理 if (myBrow.match(/Opera[\/\s](\d\.\d+)/))     document.write("<link rel="stylesheet" type="text/css" href="Opera.css" charset="Shift_JIS">"); //Operaの処理 //変数myBrowに文字列MSIEが入っていた場合(IE)の処理。 //Operaにも文字列MSIEが入っているため、Operaの処理の後に行います。 else if (myBrow.match(/MSIE (\d\.\d+)/))     document.write("<link rel="stylesheet" type="text/css" href="MSIE.css" charset="Shift_JIS">"); //MSIEの処理 //変数myBrowに文字列Firefoxが入っていた場合の処理。 else if (myBrow.match(/Firefox[\/\s](\d\.\d+)/))     document.write("<link rel="stylesheet" type="text/css" href="Firefox.css" charset="Shift_JIS">"); //Firefoxの処理 //変数myBrowに文字列Netscapeが入っていた場合の処理。 else if (myBrow.match(/Netscape[\/\s](\d\.\d+)/))     document.write("<link rel="stylesheet" type="text/css" href="Netscape.css" charset="Shift_JIS">"); //Netscapeの処理 //上記以外の処理 else myBrow = "unknown"; //それ以外のブラウザ     document.write("<link rel="stylesheet" type="text/css" href="unknown.css" charset="Shift_JIS">"); //それ以外のブラウザの処理 } ================================================================ <html> <head> <script language="JavaScript" src="css.js"></script> <Script language="JavaScript"><!-- browserCheck(); //--></Script> </head> </html> どこか間違っているでしょうか? ご回答、宜しくお願い致します。

  • JavaScriptでブラウザの判別をしたいのですがIEだけelseの処理がなぜか追加されてしまう。

    ブラウザとバージョンを表示するスクリプトを書きたいのですがIEのときだけ 「Internet Explorer: 6.0不明」のようにelseの部分を書き出してしまいます。 Firefoxのときは「Firefox: 1.5.0.4」となりelseの部分を書き出しません。 なぜこのような結果になるのでしょうか? ちなみにFirefoxの判別の部分を消去するとなぜかこの問題が起こりません。 改善策をご存知の方がおられましたらご回答をよろしくお願いします。 ua = navigator.userAgent; if( ua.indexOf( "MSIE" ) > -1 ) { str = ua.indexOf( "MSIE" ) + 5; ver = ua.substring( str, str + 3 ); document.write( "Internet Explorer: " + ver ); } //↓ここの間を消去すると問題は起こらない。 if( ua.indexOf( "Firefox" ) > -1 ) { str = ua.indexOf( "Firefox" ) + 8; ver = ua.substring( str, str + 7 ); document.write( "Firefox: " + ver ); } //↑ここの間を消去すると問題は起こらない。 else { document.write( "不明" ); }

  • 複数ブラウザ対応のお気に入りに追加ボタンを設置したのですが

    複数ブラウザ対応のお気に入りに追加ボタンを設置したのですが マウスポインタを乗せても矢印アイコンから人差し指のアイコンに変化せず困っています。 矢印のままクリックしても一応機能はするのですがやはり違和感があります。 ソースはこちらです。 <script type="text/javascript"> <!-- //Internet Explorer //ブラウザ上では[お気に入りに追加♪]というボタンが表示されます if(navigator.userAgent.indexOf("MSIE") > -1){ document.write('<div><img src="画像URL" border="0" alt="お気に入りに追加"'); document.write(' onclick="window.external.AddFavorite(\'サイトURL\',\'サイトタイトル\')"></div>'); } //Firefox //ブラウザ上では[ブックマークに追加♪]というボタンが表示されます else if(navigator.userAgent.indexOf("Firefox") > -1){ document.write('<div><img src="画像URL" border="0" alt="お気に入りに追加"'); document.write(' onclick="window.sidebar.addPanel(\'サイトタイトル\',\'サイトURL\',\'\');"></div>'); } //Netscape //ブラウザ上では[ブックマークに追加♪]というボタンが表示されます else if(navigator.userAgent.indexOf("Netscape") > -1){ document.write('<div><img src="画像URL" border="0" alt="お気に入りに追加"'); document.write(' onclick="window.sidebar.addPanel(\'サイトタイトル\',\'サイトURL \',\'\');"></div>'); } //Opera //ブラウザ上では[ブックマークに追加♪]というリンクが表示されます else if(navigator.userAgent.indexOf("Opera") > -1){ document.write('<div><a href="サイトURL" rel="sidebar" title="サイトタイトル"><img src="画像URL" border="0"></a></div>'); } //上記以外のブラウザは、何も実行(表示)されません </script> もともとのソースから多少改変してありますがJAVAの知識が全くないもので ソースを改良していただけると助かります。

  • MAC ブラウザ情報を取得するには

    はじめまして、 ゆありです。 質問させて下さい。 ASPを用いて、クライアントがMACでNetscapeだった場合、ブラウザのバージョンを取得したいんです。 ユーザエージェントを取得してみたのですが、 (1)OS :navigator.userAgent      Win/Mac を判定 (2)ブラウザ :navigator.appName       Explorer/ Netscape を判定 (3)ブラウザバージョン :IE は navigator.userAgent.substring(navigator.userAgent.indexOf("Netscape",0)+9,myAgent.indexOf("Netscape",0)+10); Netscape はnavigator.userAgent.substring(navigator.userAgent.indexOf("MSIE",0)+5,myAgent.indexOf("MSIE",0)+6); 上記の情報で、Windows(IE/Netscape)と MAC(IE)がクライアントの場合、 (3)の結果に正常値(IE6.0なら6、Netscape7.1なら7)が帰ってくるのですが、MAC(Netscape)だとうまくいきません。 MACで、Netscapeのバージョンの取得方法を知っている方、 または、Netscapeの7 と判定する為に取得できそうな情報をしっている方が いらっしゃいましたら教えて下さい。

  • 外部javascriptの読み込み方

    下記ソースのjavascriptにて外部javascript内容を読み込もうとしています ==呼び出すファイル(test.htm)========================== <head> <script type="text/javascript" src="common.js"> <!-- function init() { setBrowser(); alert(getBrowser()); } --> </script> </head> <body onload="init();"> てすと </body> </html> ================================================== ==呼び出されるファイル(common.js)=================== <!-- var strBrowser; function setBrowser() { if(navigator.userAgent.indexOf("MSIE") != -1){ // IE strBrowser = "IE"; } else if(navigator.userAgent.indexOf("Firefox") != -1){ // FireFox strBrowser = "Firefox"; } else if(navigator.userAgent.indexOf("Safari") != -1){ // Chrome & Safari strBrowser = "Safari"; } else{ strBrowser = ""; } } function getBrowser() { return strBrowser; } //--> ================================================= これで呼び出す事ができません。 何処が悪いのか、ご指摘頂ければ幸いです。