SSブログ

Javascript小僧:UA, cc_on, ラジオボタンのブラウザによる違い [コンピューター]

デジタル時計で苦労したUA(ユーザーエージェント), cc_on(条件コンパイル), ラジオボタンのブラウザによる違いについて、まとめました。表にまとめると、こうなります。

ブラウザ msie trident cc_on checked fireEvent dispatchEvent
IE8 8.0 4.0 有効 NG OK NG
IE9 9.0 5.0 有効 NG? OK? NG?
IE10 10.0 6.0 無効 NG? NG? OK?
IE11 - 7.0 無効 NG NG OK
Firefox26 - - 無効 OK NG OK
Chrome32 - - 無効 OK OK OK


各項目の説明を以下に記します。

ブラウザ ブラウザの種類。なお、IE9, IE10については環境が無いので動作検証はしていません。
msie UA(ユーザーエージェント, navigator.userAgent)にmsieがある場合は、そのversion番号を、無い場合は「-」
trident UA(ユーザーエージェント, navigator.userAgent)にtridentがある場合は、そのversion番号を、無い場合は「-」
cc_on 条件コンパイル。if( /*@cc_on ! @*/ false ){}をif(! false){} と解釈する場合は有効、if(false){}と解釈する場合は無効
checked checked属性にtrue/falseを設定することにより、ラジオボタンを設定できる場合はOK、できない場合はNG
fireEvent fireEventにより、ラジオボタンの設定ができる場合はOK、できない場合はNG。
dispatchEvent dispatchEventにより、ラジオボタンの設定ができる場合はOK、できない場合はNG


つまり、Javascriptでラジオボタンを設定しようとするとブラウザごとに扱いがまちまちで、考慮が必要ということです。IEはversionごとの違いもあり、とほほです。[猫]

1.UAのtridentでIEか否かを判定。
2.IE以外(Firefox, Chrome)の場合はchecked属性でラジオボタンを設定。
3.IE、かつ、cc_onが有効(IE8, IE9)の場合、fireEventでラジオボタンを設定。
4.IE、かつ、cc_onが無効(IE10, IE11)の場合、dispatchEventでラジオボタンを設定。

で、いいのかな? fireEvent/dispatchEventでラジオボタンを設定しようとしたとき、1回のclickでは
設定できなかったのは理由不明ですが。。。

【検証に用いたコード】
1.UAを調べる
var myUA = navigator.userAgent.toLowerCase();
if(myUA.match(/msie/i) || myUA.match(/trident/i)){
  // IE
}else{
  // IE以外
}

2.checked属性でラジオボタンを設定
// "xxxx"はラジオボタンのID
document.getElementById("xxxx").checked = true; // チェックを付ける
document.getElementById("xxxx").checked = false; // チェックを外す

3.fireEventでラジオボタンを設定
// "xxxx"はラジオボタンのID
document.getElementById("xxxx").fireEvent("onclick");

4.dispatchEventでラジオボタンを設定
// "xxxx"はラジオボタンのID
// イベントオブジェクトを作成
var event = document.createEvent( "MouseEvents" );
// イベントの内容を設定
event.initEvent("click", false, true);
// イベントを発火させる
document.getElementById("xxxx").dispatchEvent(event);

【参考記事】
Javascript小僧:デジタル時計(IE11対応)
http://cheese999.blog.so-net.ne.jp/2014-01-19

Javascript小僧:デジタル時計(IE11対応コード)
http://cheese999.blog.so-net.ne.jp/2014-01-19-1
ヤバイぜ!(20)  コメント(4)  トラックバック(0) 
共通テーマ:パソコン・インターネット

ヤバイぜ! 20

コメント 4

なんだかなぁ〜!! 横 濱男

ブラウザの動作確認は、大変ですね。

by なんだかなぁ〜!! 横 濱男 (2014-02-02 11:36) 

cheese999

なんだかなぁ〜!! 横 濱男さん、
趣味でやっているから、うまくいかなくてもいいのですが。。。
Webデザイナーさんの苦労がしのばれます。
(^_0)ノ

「やったぜ!」 ありがとうございます。[__猫]
by cheese999 (2014-02-02 20:46) 

モッズパンツ

そういえば、古いブラウザそのままなのでちょっと不便になって来ました。w

cheese999さんのところでも恵方巻食べるよw

        ∧_∧
       ( ´∀`)____
       ( つ(;;;;;;;(@)
        | | | ̄ ̄ ̄ ̄
       (_)_)

  _         バクバクムシャムシャ
┌─┴┴─┐   ___ ∧_∧
|東北東|  (;;;;;∩(`   )
└─┬┬─┘    ̄ ̄ し    )
  ││         | ○ | 
  ││         (_)_)


  ∧_∧
 ( ´∀`)マメマーキするよ
 ( つ[二С)
 | | |
 (__)_)


 。゚
   \     ∧_∧    / ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
     ((  ∩(´∀` )  <  鬼はソトォ~~
        ゝ l工l⊂ )    \__________
         ( (  (
         (_(__)
                    。
                  ゚ 。
        ∧_∧    /
       ( ´∀`)∩  ))  / ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
       ( つl工l ノ    <  福はウチィ~~
        )  ) )      \__________
       (__)_)

by モッズパンツ (2014-02-03 20:41) 

cheese999

モッズパンツさん、
「福は内」「鬼も内」でもいいかな~。なんてね。
(^_0)ノ
by cheese999 (2014-02-04 00:04) 

Facebook コメント

トラックバック 0

トラックバックの受付は締め切りました

この広告は前回の更新から一定期間経過したブログに表示されています。更新すると自動で解除されます。