Advertisement
craigshoemaker

modernizr-detection

Jul 9th, 2011
585
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
HTML 5 15.70 KB | None | 0 0
  1. <!doctype html>
  2. <html>
  3. <head>
  4.     <title>Using Modernizr to Detect Cross Browser HTML5 Capabilities</title>
  5.     <link rel="Stylesheet" href="/global.css" type="text/css" />
  6.     <style>    
  7.     hgroup h2
  8.     {
  9.         margin-top:-20px;
  10.         font-weight:normal;
  11.         font-size:14px;
  12.     }
  13.    
  14.     table
  15.     {
  16.         border:1px solid #999;
  17.         border-collapse:collapse;
  18.     }
  19.    
  20.     table tr th
  21.     {
  22.         background-color:#ccc;
  23.         padding:6px;
  24.     }
  25.    
  26.     .detected
  27.     {
  28.         background:url(../images/check.png) no-repeat center center;
  29.     }
  30.     .notDetected
  31.     {
  32.         background:url(../images/x.png) no-repeat center center;
  33.     }
  34.     .feature
  35.     {
  36.         width:85px;
  37.         height:25px;
  38.     }
  39.    
  40.     .api
  41.     {
  42.         font-family:Courier New;
  43.         padding:3px;
  44.     }
  45.    
  46.     footer
  47.     {
  48.         margin-top:35px;    
  49.     }
  50.    
  51.     .alt
  52.     {
  53.         background-color:#eee;
  54.     }
  55.     </style>
  56.     <script src="../scripts/jquery-1.4.4.min.js"></script>
  57.     <script src="../scripts/modernizr-1.6.min.js"></script>
  58.     <script>
  59.  
  60.         // learn more about Modernizr here:
  61.         //   http://www.modernizr.com/docs/
  62.  
  63.         var features = new Array();
  64.         $().ready(function () {
  65.  
  66.             // by default mark all functionality as 'not detected'
  67.             $(".feature").addClass("notDetected");
  68.  
  69.             // select all element ID's of API members to detect
  70.             $("article table tr[id]").each(function (i, element) {
  71.                 features[i] = element.id;
  72.             });
  73.  
  74.             // for each member, run the detection using Modernizr
  75.             // and display the results
  76.             // note: the 'fontface' detection requires a callback
  77.             var feature, container;
  78.             for (var i = 0; i < features.length; i++) {
  79.                feature = features[i];
  80.                container = document.getElementById(feature);
  81.  
  82.                var api = container.querySelector(".api");
  83.                $(api).text("Modernizr." + features[i]);
  84.  
  85.                if (feature == "fontface") {
  86.                    Modernizr._fontfaceready(function (bool) {
  87.                        detected(container);
  88.                    });
  89.                }
  90.                else {
  91.                    // outside the loop the API call is a just
  92.                    // a call to each feature's boolean property
  93.                    //  Ex: Modernizr.canvas
  94.                    if (eval("Modernizr." + feature)) {
  95.                        detected(container);
  96.                    }
  97.                }
  98.            }
  99.            // zebra stripe the table
  100.            $("table tr:even").addClass("alt");
  101.        });
  102.        // display the checkmark if the feature is detected
  103.        function detected(container) {
  104.            var e = container.querySelector(".feature");
  105.            $(e).removeClass("notDetected").addClass("detected");
  106.        }
  107.    </script>
  108. </head>
  109. <body>
  110.     <header>
  111.         <hgroup>
  112.             <h1>Detecting HTML5 Features</h1>
  113.             <h2>Using <a href="http://www.modernizr.com/" target="_blank">Modernizr.js</a> to determine wich HTML5 features are available in the current browser.</h2>
  114.         </hgroup>
  115.     </header>
  116.     <article>
  117.         <table cellpadding="3" cellspacing="3" border="1">
  118.             <tr>
  119.                 <th>Feature</th>
  120.                 <th>API Member</th>
  121.                 <th width="25">Supported in this Browser</th>
  122.             </tr>
  123.             <tr id="fontface">
  124.                 <td>@font-face</td>
  125.                 <td class="api"></td>
  126.                 <td class="feature"></td>
  127.             </tr>
  128.             <tr id="canvas">
  129.                 <td>Canvas</td>
  130.                 <td class="api"></td>
  131.                 <td class="feature"></td>
  132.             </tr>
  133.             <tr id="canvastext">
  134.                 <td>Canvas Text</td>
  135.                 <td class="api"></td>
  136.                 <td class="feature"></td>
  137.             </tr>
  138.             <tr id="webgl">
  139.                 <td>WebGL</td>
  140.                 <td class="api"></td>
  141.                 <td class="feature"></td>
  142.             </tr>
  143.             <tr id="audio">
  144.                 <td>HTML5 Audio</td>
  145.                 <td class="api"></td>
  146.                 <td class="feature"></td>
  147.             </tr>
  148.             <tr id="audio.ogg">
  149.                 <td>HTML5 Audio formats (ogg)</td>
  150.                 <td class="api"></td>
  151.                 <td class="feature"></td>
  152.             </tr>
  153.             <tr id="audio.mp3">
  154.                 <td>HTML5 Audio formats (mp3)</td>
  155.                 <td class="api"></td>
  156.                 <td class="feature"></td>
  157.             </tr>
  158.             <tr id="audio.wav">
  159.                 <td>HTML5 Audio formats (wav)</td>
  160.                 <td class="api"></td>
  161.                 <td class="feature"></td>
  162.             </tr>
  163.             <tr id="audio.m4a">
  164.                 <td>HTML5 Audio formats (m4a)</td>
  165.                 <td class="api"></td>
  166.                 <td class="feature"></td>
  167.             </tr>
  168.             <tr id="video">
  169.                 <td>HTML5 Video</td>
  170.                 <td class="api"></td>
  171.                 <td class="feature"></td>
  172.             </tr>
  173.             <tr id="video.ogg">
  174.                 <td>HTML5 Video formats (ogg)</td>
  175.                 <td class="api"></td>
  176.                 <td class="feature"></td>
  177.             </tr>
  178.             <tr id="video.h264">
  179.                 <td>HTML5 Video formats (h264)</td>
  180.                 <td class="api"></td>
  181.                 <td class="feature"></td>
  182.             </tr>
  183.             <tr id="rgba">
  184.                 <td>rgba()</td>
  185.                 <td class="api"></td>
  186.                 <td class="feature"></td>
  187.             </tr>
  188.             <tr id="hsla">
  189.                 <td>hsla()</td>
  190.                 <td class="api"></td>
  191.                 <td class="feature"></td>
  192.             </tr>
  193.             <tr id="borderimage">
  194.                 <td>border-image</td>
  195.                 <td class="api"></td>
  196.                 <td class="feature"></td>
  197.             </tr>
  198.             <tr id="borderradius">
  199.                 <td>border-radius</td>
  200.                 <td class="api"></td>
  201.                 <td class="feature"></td>
  202.             </tr>
  203.             <tr id="boxshadow">
  204.                 <td>box-shadow</td>
  205.                 <td class="api"></td>
  206.                 <td class="feature"></td>
  207.             </tr>
  208.             <tr id="textshadow">
  209.                 <td>text-shadow</td>
  210.                 <td class="api"></td>
  211.                 <td class="feature"></td>
  212.             </tr>
  213.             <tr id="multiplebgs">
  214.                 <td>Multiple backgrounds</td>
  215.                 <td class="api"></td>
  216.                 <td class="feature"></td>
  217.             </tr>
  218.             <tr id="backgroundsize">
  219.                 <td>background-size</td>
  220.                 <td class="api"></td>
  221.                 <td class="feature"></td>
  222.             </tr>
  223.             <tr id="opacity">
  224.                 <td>opacity</td>
  225.                 <td class="api"></td>
  226.                 <td class="feature"></td>
  227.             </tr>
  228.             <tr id="cssanimations">
  229.                 <td>CSS Animations</td>
  230.                 <td class="api"></td>
  231.                 <td class="feature"></td>
  232.             </tr>
  233.             <tr id="csscolumns">
  234.                 <td>CSS Columns</td>
  235.                 <td class="api"></td>
  236.                 <td class="feature"></td>
  237.             </tr>
  238.             <tr id="cssgradients">
  239.                 <td>CSS Gradients</td>
  240.                 <td class="api"></td>
  241.                 <td class="feature"></td>
  242.             </tr>
  243.             <tr id="cssreflections">
  244.                 <td>CSS Reflections</td>
  245.                 <td class="api"></td>
  246.                 <td class="feature"></td>
  247.             </tr>
  248.             <tr id="csstransforms">
  249.                 <td>CSS 2D Transforms</td>
  250.                 <td class="api"></td>
  251.                 <td class="feature"></td>
  252.             </tr>
  253.             <tr id="csstransforms3d">
  254.                 <td>CSS 3D Transforms</td>
  255.                 <td class="api"></td>
  256.                 <td class="feature"></td>
  257.             </tr>
  258.             <tr id="flexbox">
  259.                 <td>Flexible Box Model</td>
  260.                 <td class="api"></td>
  261.                 <td class="feature"></td>
  262.             </tr>
  263.             <tr id="csstransitions">
  264.                 <td>CSS Transitions</td>
  265.                 <td class="api"></td>
  266.                 <td class="feature"></td>
  267.             </tr>
  268.             <tr id="geolocation">
  269.                 <td>Geolocation API</td>
  270.                 <td class="api"></td>
  271.                 <td class="feature"></td>
  272.             </tr>
  273.             <tr id="inputtypes.search">
  274.                 <td>Input Types (search)</td>
  275.                 <td class="api"></td>
  276.                 <td class="feature"></td>
  277.             </tr>
  278.             <tr id="inputtypes.tel">
  279.                 <td>Input Types (tel)</td>
  280.                 <td class="api"></td>
  281.                 <td class="feature"></td>
  282.             </tr>
  283.             <tr id="inputtypes.url">
  284.                 <td>Input Types (url)</td>
  285.                 <td class="api"></td>
  286.                 <td class="feature"></td>
  287.             </tr>
  288.             <tr id="inputtypes.email">
  289.                 <td>Input Types (email)</td>
  290.                 <td class="api"></td>
  291.                 <td class="feature"></td>
  292.             </tr>
  293.             <tr id="inputtypes.datetime">
  294.                 <td>Input Types (datetime)</td>
  295.                 <td class="api"></td>
  296.                 <td class="feature"></td>
  297.             </tr>
  298.             <tr id="inputtypes.date">
  299.                 <td>Input Types (date)</td>
  300.                 <td class="api"></td>
  301.                 <td class="feature"></td>
  302.             </tr>
  303.             <tr id="inputtypes.month">
  304.                 <td>Input Types (month)</td>
  305.                 <td class="api"></td>
  306.                 <td class="feature"></td>
  307.             </tr>
  308.             <tr id="inputtypes.week">
  309.                 <td>Input Types (week)</td>
  310.                 <td class="api"></td>
  311.                 <td class="feature"></td>
  312.             </tr>
  313.             <tr id="inputtypes.time">
  314.                 <td>Input Types (time)</td>
  315.                 <td class="api"></td>
  316.                 <td class="feature"></td>
  317.             </tr>
  318.             <tr id="inputtypes.datetimeLocal">
  319.                 <td>Input Types (datetime-local)</td>
  320.                 <td class="api"></td>
  321.                 <td class="feature"></td>
  322.             </tr>
  323.             <tr id="inputtypes.number">
  324.                 <td>Input Types (number)</td>
  325.                 <td class="api"></td>
  326.                 <td class="feature"></td>
  327.             </tr>
  328.             <tr id="inputtypes.range">
  329.                 <td>Input Types (range)</td>
  330.                 <td class="api"></td>
  331.                 <td class="feature"></td>
  332.             </tr>
  333.             <tr id="inputtypes.color">
  334.                 <td>Input Types (color)</td>
  335.                 <td class="api"></td>
  336.                 <td class="feature"></td>
  337.             </tr>
  338.             <tr id="input.autocomplete">
  339.                 <td>Input Attributes (autocomplete)</td>
  340.                 <td class="api"></td>
  341.                 <td class="feature"></td>
  342.             </tr>
  343.             <tr id="input.autofocus">
  344.                 <td>Input Attributes (autofocus)</td>
  345.                 <td class="api"></td>
  346.                 <td class="feature"></td>
  347.             </tr>
  348.             <tr id="input.list">
  349.                 <td>Input Attributes (list)</td>
  350.                 <td class="api"></td>
  351.                 <td class="feature"></td>
  352.             </tr>
  353.             <tr id="input.placeholder">
  354.                 <td>Input Attributes (placeholder)</td>
  355.                 <td class="api"></td>
  356.                 <td class="feature"></td>
  357.             </tr>
  358.             <tr id="input.max">
  359.                 <td>Input Attributes (max)</td>
  360.                 <td class="api"></td>
  361.                 <td class="feature"></td>
  362.             </tr>
  363.             <tr id="input.min">
  364.                 <td>Input Attributes (min)</td>
  365.                 <td class="api"></td>
  366.                 <td class="feature"></td>
  367.             </tr>
  368.             <tr id="input.multiple">
  369.                 <td>Input Attributes (multiple)</td>
  370.                 <td class="api"></td>
  371.                 <td class="feature"></td>
  372.             </tr>
  373.             <tr id="input.pattern">
  374.                 <td>Input Attributes (pattern)</td>
  375.                 <td class="api"></td>
  376.                 <td class="feature"></td>
  377.             </tr>
  378.             <tr id="input.required">
  379.                 <td>Input Attributes (required)</td>
  380.                 <td class="api"></td>
  381.                 <td class="feature"></td>
  382.             </tr>
  383.             <tr id="input.step">
  384.                 <td>Input Attributes (step)</td>
  385.                 <td class="api"></td>
  386.                 <td class="feature"></td>
  387.             </tr>
  388.             <tr id="localstorage">
  389.                 <td>localStorage</td>
  390.                 <td class="api"></td>
  391.                 <td class="feature"></td>
  392.             </tr>
  393.             <tr id="sessionstorage">
  394.                 <td>sessionStorage</td>
  395.                 <td class="api"></td>
  396.                 <td class="feature"></td>
  397.             </tr>
  398.             <tr id="webworkers">
  399.                 <td>Web Workers</td>
  400.                 <td class="api"></td>
  401.                 <td class="feature"></td>
  402.             </tr>
  403.             <tr id="applicationcache">
  404.                 <td>applicationCache</td>
  405.                 <td class="api"></td>
  406.                 <td class="feature"></td>
  407.             </tr>
  408.             <tr id="svg">
  409.                 <td>SVG</td>
  410.                 <td class="api"></td>
  411.                 <td class="feature"></td>
  412.             </tr>
  413.             <tr id="inlinesvg">
  414.                 <td>Inline SVG</td>
  415.                 <td class="api"></td>
  416.                 <td class="feature"></td>
  417.             </tr>
  418.             <tr id="svgclippaths">
  419.                 <td>SVG Clip paths</td>
  420.                 <td class="api"></td>
  421.                 <td class="feature"></td>
  422.             </tr>
  423.             <tr id="smil">
  424.                 <td>SMIL</td>
  425.                 <td class="api"></td>
  426.                 <td class="feature"></td>
  427.             </tr>
  428.             <tr id="websqldatabase">
  429.                 <td>Web SQL Database</td>
  430.                 <td class="api"></td>
  431.                 <td class="feature"></td>
  432.             </tr>
  433.             <tr id="indexeddb">
  434.                 <td>IndexedDB</td>
  435.                 <td class="api"></td>
  436.                 <td class="feature"></td>
  437.             </tr>
  438.             <tr id="websockets">
  439.                 <td>Web Sockets</td>
  440.                 <td class="api"></td>
  441.                 <td class="feature"></td>
  442.             </tr>
  443.             <tr id="hashchange">
  444.                 <td>hashchange Event</td>
  445.                 <td class="api"></td>
  446.                 <td class="feature"></td>
  447.             </tr>
  448.             <tr id="history">
  449.                 <td>History Management</td>
  450.                 <td class="api"></td>
  451.                 <td class="feature"></td>
  452.             </tr>
  453.             <tr id="draganddrop">
  454.                 <td>Drag and Drop</td>
  455.                 <td class="api"></td>
  456.                 <td class="feature"></td>
  457.             </tr>
  458.             <tr id="postmessage">
  459.                 <td>Cross-window Messaging</td>
  460.                 <td class="api"></td>
  461.                 <td class="feature"></td>
  462.             </tr>
  463.             <tr id="touch">
  464.                 <td>Touch Events</td>
  465.                 <td class="api"></td>
  466.                 <td class="feature"></td>
  467.             </tr>
  468.         </table>
  469.         <footer>
  470.         </footer>
  471.     </article>
  472. </body>
  473. </html>
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement