UAを使いバージョン別にブラウザを分岐させたいのですが、
『xx以上oo未満』がうまくいきません。
シンタックスはないのですが、
どのような式にしたらいいでしょうか。
script
http://the-design-world.com/test/jquery.viewmode …
該当部分
...
}else if(ua.indexOf("Firefox")>-1){
if(ua.indexOf("Firefox >= 3.5")>-1){
c = 3;
}else if((ua.indexOf("Firefox <= 3.6")>-1) && (ua.indexOf("Firefox > 4")>-1)){
c = opt.firefox36;
}else if(ua.indexOf("Firefox <= 4")>-1){
c = opt.firefox4upper;
}else {
c = 1;
}
...
どなたかご助力いただけますでしょうか。
No.1
- 回答日時:
ブラウザのバージョンごとの分岐というのはなかなか難しく、できないことはないと思うのですが必ずしも全ての場合に正しく分岐できるわけではありません [1]。
ブラウザのバージョンごとの分岐を行う以外の方法を探した方が良いのではないでしょうか?なぜブラウザのバージョンごとに分岐させたいのかわかりませんが、もし、ブラウザごとに存在したりしなかったりするメソッドがあるから、という理由なのでしたら、以下のように、そのメソッドが存在するかどうかを調べる方がより良い手法だといえます。
// 例えば、elem.addEventListener メソッドが HTMLElement に定義されているかどうかで分岐
// elem は HTMLElement オブジェクト
if( elem.addEventListener ) {
// elem.addEventListener は定義されている
} else {
// 定義されていない
}
もし他の理由でブラウザのバージョンごとの分岐を実現したいのでしたら的外れな意見で申し訳ないです。
[1] https://developer.mozilla.org/ja/DOM/window.navi …
参考URL:https://developer.mozilla.org/ja/DOM/window.navi …
完全に全てではなくていいのですが、HTML・CSSの切り替えをするために、ある程度のものが欲しいのです。
また、ブラウザにより、一部HTMLElementは動いたり動かなかったり少しだけ動いたり。。。とまちまちなので、
上記サンプルでの分岐は期待できません。
No.2
- 回答日時:
代表的なUAの一覧があるので、そのあたりを参考にすれば分岐の方法がわかるのではないでしょうか。
http://www.openspc2.org/userAgent/
http://pst.co.jp/powersoft/html/index.php?f=5311
まぁ、偽装できたりもするので、必ずしもあてにはできないかと…
No.3
- 回答日時:
質問のところに書かれている URL から Design World のサイトを拝見しました。
思想は大体わかりましたが、やはり JavaScript で UA を判定することは時代遅れだと思います。HTML 要素の対応、非対応に関しては、「現在多く使われている (IE 以外の) ブラウザで対応していない要素は使わない」 「IE のみ対応していない場合は、IE の条件コメントを使用して IE だけ特別な記述を行う」 という方針を、CSS の対応、非対応に関しては 「対応していない CSS プロパティがあっても問題ないように CSS を書く」 「IE に関しては HTML 要素と同じように IE 専用の CSS ファイルを条件コメントで読み込ませる」 という方針を採るべきです。
まあそれはともかく、元々の質問に答えるとすれば、
「正規表現を使ってユーザーエージェントを表す文字列から、そのバージョンを表す部分文字列を抜き出し、数値に変換して、数値として比較する」
というのが最も簡単な方法だと思います。
結局そこにいきついてしまうわけですね。。。
大がかりな動的システムを作らずに、半動的なjavascriptである程度はできないかと取り掛かっては見たのですが、
やはり壁は多かったです。
indexOf、match、search等々色々試してはみましたが、肝心のOperaMini/OperaMobileがどうにもならないというのが現状です。
ご回答有難うございました
No.4ベストアンサー
- 回答日時:
> indexOf、match、search等々色々試してはみましたが、肝心の
> OperaMini/OperaMobileがどうにもならないというのが現状です。
Opera Mini / Opera Mobile 以外でできたのでしたら Opera Mini / Opera Mobile でも同じようにできると思うのですが、何か難しい点があるのでしょうか。。
http://dev.opera.com/articles/view/opera-mobile- …
http://dev.opera.com/articles/view/opera-mini-5- …
上記の Opera の web 開発者向けページに拠ると、
・Opera Mini 5 は [Opera Mini/{数字}] という文字列を検出することで、Opera Mini であることを確認し、{数字} の部分をバージョン番号だとみなせる
・Opera Mobile 10 は [Opera Mobi] という文字列を検出することで Opera Mobile であることを確認し、[Version/{数字}] という文字列の {数字} の部分をバージョン番号だとみなせる
ようです。 もっと古いバージョンはわかりませんが。。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- PHP PHPでCookieを使った訪問回数について 1 2023/05/28 14:10
- PHP PHPのエラーの解消法について教えて下さい。 1 2023/02/06 10:48
- JavaScript フォームが空欄の時にフォームの外をクリックすると、エラーが出るコードを調べています。 1 2023/06/25 11:51
- JavaScript jsで、配列内の文章を改行する際どのようにすればいいですか。 3 2022/07/05 20:40
- PHP PHPでユーザー情報を入力して簡易ログイン機能をつくってみたのですが 1 2023/05/29 08:51
- Visual Basic(VBA) VBAの繰り返し処理について教えてください。 3 2022/08/02 13:21
- JavaScript セレクトボックスで配列を呼び出したい。 1 2022/07/08 20:14
- JavaScript jQueryでのレスポンシブが綺麗に動かない 3 2022/06/21 11:08
- JavaScript セレクトボックスを2つ選択してメッセージなどを表示するには。~運賃検索プログラムを完成させたい~ 1 2022/07/22 11:10
- C言語・C++・C# プログラムの時、フローチャートはどうなりますか?図でお願いします。 int main(void) { 1 2022/10/01 22:45
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
gitでバージョン指定してダウン...
-
EclipseでJavaコンパイラのバー...
-
windowsの構造体にはなぜ自身の...
-
javaのupdateを禁止するには
-
Windows7でVB2005の開発
-
C# Excelを遅延バインディング...
-
XCODE コンソールのクリア
-
PHP+PostgreSQLにおける「pg_ex...
-
Eclipse3.5.1のJUnitぼバージョ...
-
バージョン番号とリリース番号...
-
VBAでDVDのトレイを開く。、
-
SFWiz.xlaって・・・
-
Macでeclipseを使用しJava独学中
-
CrystalReportsのバージョン確...
-
vba クリップボードクリアにつ...
-
Javaでのエラーについて
-
Pythonを勉強する道のり
-
MSFormsとは何ですか?
-
JSFで、マネージビーンに画面の...
-
IISワーカープロセスが原因でCP...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
gitでバージョン指定してダウン...
-
使用しているJUnitのバージョン...
-
CrystalReportsのバージョン確...
-
EclipseでJavaコンパイラのバー...
-
visual stadio 参照問題
-
バイナリファイルの著作権など...
-
VMwareの古いバージョンがダウ...
-
VBAでDVDのトレイを開く。、
-
Selenium/VBA/Chrome エラーで...
-
【javaコンパイル時のエラーに...
-
MSCOMCTL.OCXのアップデートの方法
-
Javaのバージョンアップにとも...
-
chromedriverのDLについて
-
JRE 1.5.0.14のダウンロード先...
-
gridviewでの高さの取得方法
-
C# Excelを遅延バインディング...
-
Tmocatのバージョン
-
Flashplayerの運用について
-
エクセルVBAがMACで動かない
-
reactを利用できるnode.jsのバ...
おすすめ情報