IEより凶悪なブラウザ

謎のプリン語る。
プログラミングの役立つ情報とか、どうでもいい雑談とか書いてます。
一人書く人増えました。

IEより凶悪なブラウザ

みやびプリン 500 316

500 320

IEより凶悪なブラウザ - サムネイル

※この記事は6年以上前の記事です。
現在は状況が異なる可能性がありますのでご注意ください。

どうも、繁忙期を越えても、やっぱり忙しいみやびです。
修正やら、改善やらでなかなか抜けれない・・・。
(おまえが修正必要なの書いてるからだヨ)

さて、今日は、愚痴90%な記事です。
表記の話だが、みなさんもご存知Internet Explorerと言えば、
言わずと知れた、凶悪ブラウザです。
僕ら年代のコーダーは、散々苦しめられました。特にIE6な。
それでも、最近は、Microsoftさんが、空気読んで強制アップデートをかけてくれたおかげで、
IE9以下はほとんど気にしなくても済むようになりました。
(みやびの勤める会社も、IE9以下は、ほぼほぼサポート外にしてる)
やっと平和が訪れたか・・・、と思うのも束の間、
もっと凶悪なブラウザがこの世に出現したんですよ。

Android標準ブラウザだ。

これは、Android OS4.X系に標準搭載されている、ブラウザ。
もう何世代も前のOSの搭載なので、だいぶユーザーは少なくなってきたが、
根強く残ってるんですよ、これが・・・。
このブラウザの嫌なところといえば、
CSS3の大半がサポートされていないこと。
スマホなのにだよ!?
CSS3なんて、今の時代、IEでさえ、だいぶサポートしてんのに(IE11は割とまともにサポートしてくれてる)、
時代遅れもいいとこです。
そして、Googleもサポート切っちゃってるしね。
改善は今後絶対行われない。
ただ、お客様にそんなこと強要はできないし、
ネットリテラシーがあまり高くないユーザーを無視するわけにはいかない。

というわけで、いろいろ調べて、
ユーザーエージェントで判別して、
Android OS4.4以下かつ、標準ブラウザを使ってたら、サポート外だぜ、的なアラートを出すという結論に至った。

$(function() {

var $usedUA = navigator.userAgent;

if ($usedUA.indexOf('Android') != -1) {
  // Androidである

  //Android Version取得
  var androidPos = $usedUA.indexOf('Android') + 8;
  var aVersion = $usedUA.slice(androidPos, androidPos + 5);
  var aVersionArr = aVersion.split('.');

  // OSのバージョンが低い
  var $lowBrowserFlg = parseInt(aVersionArr[0]) <= 4 && parseInt(aVersionArr[1]) <= 4;
  // 標準ブラウザかの取得
  var $defaultFlg = ($usedUA.indexOf('Android') != -1 && $usedUA.indexOf('Linux; U;') != -1 && $usedUA.indexOf('Chrome') == -1) || ($usedUA.indexOf('Android') != -1 && $usedUA.indexOf('Chrome') != -1 && $usedUA.indexOf('Version') != -1);

  if ($defaultFlg && $lowBrowserFlg) {
    //標準ブラウザかつバージョンが低い
    //アラートを出すなどの処理
  }

}
});

これで、Android OS4.4以下かつ標準ブラウザを対象に処理ができるようになった。
アラートを出すなりなんなりすればいい。

これでAndroidは大丈夫だろう。

そう思ったのも束の間。

そう、本エントリーは、こっからが本題。(前置きなg以下ry)
Android標準ブラウザよりもっと凶悪で強烈なブラウザがいた。

Yahoo!ブラウザー(Android版)である。

何を隠そう、このブラウザ、
Chromeなどの大手ブラウザと違い、
その機種に搭載されている、デフォルトブラウザと同じ表示をしやがるのだ。
ということは、古いAndroid OSの機種は当然、
標準ブラウザと同じ表示となる。
(新しいOSで、Chromeが標準搭載の機種は、Chromeと同じ表示)
おそらくアプリのWebビューという技術を使っている。そう考えれば標準ブラウザと同じ表示になるのはうなづける。
ふざけんなって。
せっかく標準ブラウザを排除したと思ったら、今度は、表示は一緒なのに、ユーザーエージェントが違うブラウザが存在したってわけだ。
つまり、新たなユーザーエージェントの分岐をする必要があるってこった。
コーダー泣かせもいいところだ。

というわけで、先ほどのJSに、Yahooブラウザの処理も合わせたのが、こちら。

$(function() {

var $usedUA = navigator.userAgent;

if ($usedUA.indexOf('Android') != -1) {
  // Androidである

  //Android Version取得
  var androidPos = $usedUA.indexOf('Android') + 8;
  var aVersion = $usedUA.slice(androidPos, androidPos + 5);
  var aVersionArr = aVersion.split('.');

  // OSのバージョンが低い
  var $lowBrowserFlg = parseInt(aVersionArr[0]) <= 4 && parseInt(aVersionArr[1]) <= 4;
  // 標準ブラウザかの取得
  var $defaultFlg = ($usedUA.indexOf('Android') != -1 && $usedUA.indexOf('Linux; U;') != -1 && $usedUA.indexOf('Chrome') == -1) || ($usedUA.indexOf('Android') != -1 && $usedUA.indexOf('Chrome') != -1 && $usedUA.indexOf('Version') != -1);
  // Yahoo!ブラウザかどうか
  var $yahooFlg = $usedUA.indexOf('YJApp-ANDROID') != -1;

  if ($lowBrowserFlg && ($defaultFlg || $yahooFlg)) {
    //バージョンが低いかつ、標準ブラウザかYahooブラウザである
    //アラートを出すなどの処理
  }

}
});

対象は、Android OS4.4以下かつ、Yahoo!ブラウザー、または、Android OS4.4以下かつ標準ブラウザー
って感じ。

Yahoo!ブラウザの質が悪いのは、表示だけでなく、
なまじ大手プロバイダの名を冠してるので、
ユーザー数が意外に多いことだ。
(どうせ広告とかでいっぱい出してんでしょ)
また、いろいろな便利機能があるためか、評判も割といいってのも質が悪い。

だけどさぁ、
だったら、表示なんとかしろよ!
せめて、Chrome並みになるようによ!!!

というわけで、愚痴90%なエントリーでした。

トラックバック(0)

トラックバックURL:

コメントする

ページトップへ戻る