• 締切済み

ブラウザの判定

SsfariとGoogle Chromeは、navigator.userAgent.toUpperCase();で参照するとSsfariと表示されますが。 どうしても SsfariとGoogle Chromeを判定したいのですが、何か良い方法が有りましたら教えて下さい。 現時点は、(uName.indexOf("SAFARI") >= 0 && uName.indexOf("VERSION") >= 0)をSsfariとしていますが。

  • k0021
  • お礼率89% (33/37)

みんなの回答

  • yambejp
  • ベストアンサー率51% (3827/7415)
回答No.2

(uName.indexOf("SAFARI") >= 0 && uName.indexOf("VERSION") >= 0 && uName.indexOf("CHROME") >= 0) をChromeとすればよいのでは?

k0021
質問者

お礼

回答有りがとう 御指摘の回答方法は分かっていますが別の方法は、無いですか 公開しているHPでは、判定不能の場合は、Ssfariと同一扱いになります 御指摘の内容では、問題ないですか。 テーブル(罫線有り)のセルの横結合の表を全てスタイルシートの場合は、Ssfariと同一扱いは、問題有りますが。 現時点問題にしている内容。    (1644)│望月権兵衛├──┬──滝氏の娘

回答No.1

userAgentにsafariがあって、chromeがなければ、safariです。 userAgentにsafariがあって、chromeもあれれば、chromeです。

k0021
質問者

お礼

回答有りがとう 御指摘の回答方法は分かっていますが別の方法は、無いですか

関連するQ&A

  • ブラウザ判別スクリプト

    ブラウザ別にcssを読み込みたいのですが、 firefox2.0に反映されません。 どうしてでしょうか? <!--ブラウザ判別 function getOSType() { var uAgent = navigator.userAgent.toUpperCase(); if (uAgent.indexOf("MAC") >= 0) return "MacOS"; if (uAgent.indexOf("WIN") >= 0) return "Windows"; if (uAgent.indexOf("X11") >= 0) return "UNIX"; return ""; } // Netscape Navigator -> Netscape // Internet Explorer -> Explorer // Safari -> Safari // Opera -> Opera function getBrowserName() { var aName = navigator.appName.toUpperCase(); var uName = navigator.userAgent.toUpperCase(); if (uName.indexOf("SAFARI") >= 0) return "Safari"; if (aName.indexOf("MICROSOFT") >= 0) return "Explorer"; if (uName.indexOf("FIREFOX") >= 0) return "Firefox"; return ""; } function getBrowserVersion() { var browser = getBrowserName(); var version = 0; var s = 0; var e = 0; var appVer = navigator.appVersion; var uName = navigator.userAgent.toUpperCase(); if (browser == "Safari") { version = eval(appVer.substring(0,3)) - 4; } if (browser == "Explorer") { appVer = navigator.userAgent; s = appVer.indexOf("MSIE ",0) + 5; e = appVer.indexOf(";",s); version = eval(appVer.substring(s,e)); } if (browser == "Firefox") { s = uName.indexOf("FIREFOX/",0); version = parseFloat(uName.substring(s+8,s+8+3)); } return version; } //--> <!--top.js os = getOSType(); browser = getBrowserName(); version = getBrowserVersion(); if (os == "MacOS") dirName = "css/mac/"; if (os == "Windows") dirName = "css/win/"; if (os == "UNIX") dirName = "css/unix/"; if (browser == "Explorer") dirName += "ie"; if (browser == "Safari") dirName += "saf"; if (browser == "Firefox") dirName += "ff"; if ((version >= 1) && (version < 2)) dirName += "top.css"; if ((version >= 2) && (version < 3)) dirName += "top.css"; if ((version >= 3) && (version < 4)) dirName += "top.css"; if ((version >= 4) && (version < 5)) dirName += "top.css"; if ((version >= 5) && (version < 5.5)) dirName += "top.css"; if ((version >= 5.5) && (version < 6)) dirName += "top.css"; if ((version >= 6) && (version < 7)) dirName += "top.css"; if ((version >= 7) && (version < 8)) dirName += "top.css"; document.write("<link rel='stylesheet' href='"+dirName+"' type='text/css'>"); //-->

  • 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 と判定する為に取得できそうな情報をしっている方が いらっしゃいましたら教えて下さい。

  • 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以上だが互換表示モードだとポップアップをさせたいということです。 何か良いアドバイスを頂けると大変助かります。

  • 外部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; } //--> ================================================= これで呼び出す事ができません。 何処が悪いのか、ご指摘頂ければ幸いです。

  • PC用のサイトとスマートフォン用のサイトの振り分け

    以前、このサイトで検索して、トップページは <script type="text/javascript"> if ((navigator.userAgent.indexOf('iPhone') > 0 && navigator.userAgent.indexOf('iPad') == -1) || navigator.userAgent.indexOf('iPod') > 0 || navigator.userAgent.indexOf('Android') > 0) { location.href = '/i/'; } </script> でできました。 ですが、最近、スマートフォンを新しくしたら、トップページが表示されなくなってしまいました。 どうしてでしょう? あと、トップページ以外のページはどのように振り分けをすればよいのでしょうか? よろしくお願いします。

  • UAによるリダイレクト

    スマートフォンからのアクセスを他のページに飛ばすために どうにか方法がないかと思って、いろいろ調べて勉強しております。 そこで以下のような記述でできることが分かったのですが、 javascriptなどについて詳しくないため、-1や0の意味が分かりません。 -1、0はどういう意味なのでしょうか? <script type="text/javascript"> if (document.referrer.indexOf('muay-thai-pck.com') == -1 && ((navigator.userAgent.indexOf('iPhone') > 0 && navigator.userAgent.indexOf('iPad') == -1) || navigator.userAgent.indexOf('iPod') > 0 || navigator.userAgent.indexOf('Android') > 0)) { location.href = 'url'; } </script>

  • 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>

  • 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」でテストしましたが、やはり成功しませんでした。 お手数ですが宜しくお願いします。

  • ブラウザの種類によって、処理を分岐。

    ブラウザの種類によって、処理を分岐。 以下のような感じで、ブラウザの種類(SAFARI、OPERA、FIREFOX、EXPLORERなど)によって、 perlの処理を分けたいのですが、やり方がわかりません。 (もちろん、以下は、正常に動作しません。) //↓=========================================== <script language="JavaScript"> <!-- window.onload = function(){ str = navigator.appName.toUpperCase(); if (str.indexOf("SAFARI") >= 0) browser_Name = "SAFARI"; if (str.indexOf("NETSCAPE") >= 0) browser_Name = "NETSCAPE"; if (str.indexOf("OPERA") >= 0) browser_Name = "OPERA"; if (str.indexOf("FIREFOX") >= 0) browser_Name = "FIREFOX"; if (str.indexOf("EXPLORER") >= 0) browser_Name = "EXPLORER"; if (str.indexOf("MICROSOFT") >= 0) browser_Name = "EXPLORER"; if (browser_Name == "SAFARI"){ EOM $a="1"; print <<EOM; } if (browser_Name == "NETSCAPE"){ EOM $a="10"; print <<EOM; }  : } // --> </script> //↑=========================================== どうかご教授願います。よろしくお願いします。

    • ベストアンサー
    • Perl
  • ホムペ作成・スマホ・モバイル・PC切り替え

    ホームページを自作で作成し、完成したのですが 現在、スマホとPCのきりかえするボタンを こちらのタグにて設定しました。 <script type="text/javascript"> // iPhoneまたは、Androidの場合は振り分けを判断 if (document.referrer.indexOf('本サイトのアドレス') == -1 && ((navigator.userAgent.indexOf('iPhone') > 0 && navigator.userAgent.indexOf('iPad') == -1) || navigator.userAgent.indexOf('iPod') > 0 || navigator.userAgent.indexOf('Android') > 0)) { if(confirm('スマートフォン用サイトを表示しますか?')) { location.href = '携帯サイトのアドレス'; } } </script> しかし、ガラケーで見ると、PC版、スマホ版、どちらもデザインが崩れていて見にくい状態です。 それにこのジャバスプリクトはガラケーでは表示されません。 そこで詳しい方に質問なのですが、ガラケーで、わたしのホームページにアクセスした場合 アメブロに飛ぶように設定などできませんか? またこのような「スマートフォン用サイトを表示しますか?」というようなコメントも出すことは可能でしょうか?

専門家に質問してみよう