Saturday, July 14, 2012

Javascript Object Detection

Example objects used to "rough" detect a particular browser
Scheme Detects
document.getElementById Firefox1+, IE5+, Opera7+, Safari, and most modern browsers in general.
window.getComputedStyle Firefox1+ and Opera 8+, and Safari 2+
window.globalStorage Firefox2+
window.globalStorage && window.postMessage Firefox3+
document.getElementsByClassName Firefox3+ and Opera 9.5+, and Safari 3+
document.querySelector Firefox3.5+, IE8+ (in standards compliant mode only), Opera9.5+, and Safari 3+
document.all IE4+
window.attachEvent IE5+
window.createPopup IE5.5+
document.compatMode && document.all IE6+
window.XMLHttpRequest IE7+, Firefox1+, and Opera8+
window.XMLHttpRequest && document.all

or:

document.documentElement && typeof document.documentElement.style.maxHeight!="undefined"

IE7+

Note: First scheme will fail if visitor explicitly disables native xmlHTTPRequest support (under Toolbar-> Internet Options-> Advanced). The second one will not.

XDomainRequest IE8+
document.documentMode IE8+ (detects IE8 in a specific document mode, such as standards complaint).

Because IE8 can render a page in various different modes depending on the page's doctype plus the presence of certain HTML elements, documentMode is an IE8+ property that returns a different number depending on the mode the page is being rendered in. They are:

5 Page is running in IE5 mode (aka "quirks mode").
7 Page is running in IE7 standards mode.
8 Page is running in IE8 standards mode.
9 Page is running in IE9 standards mode.

This means that even though the user is using IE8 or IE9, for example, if a webpage is missing a valid doctype, document.documentMode will return 5.

XDomainRequest && window.msPerformance IE9+

window.msPerformance is a IE9+ property you can use to detect IE9. There are other IE9 only window properties you can use in place of it as well for the purpose. See a list here.

window.opera Opera (any version)

* Since Opera by default also identifies itself as IE (apart from Opera), with support for many of IE's proprietary objects, the IE detection schemes above will also return true for Opera. Use "window.opera" in combination to filter out Opera browsers.

if (document.documentElement && typeof document.documentElement.style.maxHeight!="undefined")
alert("You're using IE7")

The following detects a page using IE8 standards compliant mode:

if (document.documentMode==8)
alert("IE8 standards mode")

Sunday, July 1, 2012

Music Frequencies as Javascript Variables

<script type="text/javascript" >

var notes = [ 
 ['C' , '16.35'] , 
 ['C#' , '17.32'] , 
 ['D' , '18.35'] , 
 ['Eb' , '19.45'] , 
 ['E' , '20.60'] , 
 ['F' , '21.83'] , 
 ['F#' , '23.12'] , 
 ['G' , '24.50'] , 
 ['G#' , '25.96'] , 
 ['A' , '27.50'] , 
 ['Bb' , '29.14'] , 
 ['B' , '30.87'] , 
 ['C' , '32.70'] , 
 ['C#' , '34.65'] , 
 ['D' , '36.71'] , 
 ['Eb' , '38.89'] , 
 ['E' , '41.20'] , 
 ['F' , '43.65'] , 
 ['F#' , '46.25'] , 
 ['G' , '49.00'] , 
 ['G#' , '51.91'] , 
 ['A' , '55.00'] , 
 ['Bb' , '58.27'] , 
 ['B' , '61.74'] , 
 ['C' , '65.41'] , 
 ['C#' , '69.30'] , 
 ['D' , '73.42'] , 
 ['Eb' , '77.78'] , 
 ['E' , '82.41'] , 
 ['F' , '87.31'] , 
 ['F#' , '92.50'] , 
 ['G' , '98.00'] , 
 ['G#' , '103.8'] , 
 ['A' , '110.0'] , 
 ['Bb' , '116.5'] , 
 ['B' , '123.5'] , 
 ['C' , '130.8'] , 
 ['C#' , '138.6'] , 
 ['D' , '146.8'] , 
 ['Eb' , '155.6'] , 
 ['E' , '164.8'] , 
 ['F' , '174.6'] , 
 ['F#' , '185.0'] , 
 ['G' , '196.0'] , 
 ['G#' , '207.7'] , 
 ['A' , '220.00'] , 
 ['Bb' , '233.1'] , 
 ['B' , '246.9'] , 
 ['C' , '261.6'] , 
 ['C#' , '277.2'] , 
 ['D' , '293.7'] , 
 ['Eb' , '311.1'] , 
 ['E' , '329.6'] , 
 ['F' , '349.2'] , 
 ['F#' , '370.0'] , 
 ['G' , '392.0'] , 
 ['G#' , '415.3'] , 
 ['A' , '440.0'] , 
 ['Bb' , '466.2'] , 
 ['B' , '493.9'] , 
 ['C' , '523.3'] , 
 ['C#' , '554.4'] , 
 ['D' , '587.3'] , 
 ['Eb' , '622.3'] , 
 ['E' , '659.3'] , 
 ['F' , '698.5'] , 
 ['F#' , '740.0'] , 
 ['G' , '784.0'] , 
 ['G#' , '830.6'] , 
 ['A' , '880.0'] , 
 ['Bb' , '932.3'] , 
 ['B' , '987.8'] , 
 ['C' , '1047'] , 
 ['C#' , '1109'] , 
 ['D' , '1175'] , 
 ['Eb' , '1245'] , 
 ['E' , '1319'] , 
 ['F' , '1397'] , 
 ['F#' , '1480'] , 
 ['G' , '1568'] , 
 ['G#' , '1661'] , 
 ['A' , '1760'] , 
 ['Bb' , '1865'] , 
 ['B' , '1976'] , 
 ['C' , '2093'] , 
 ['C#' , '2217'] , 
 ['D' , '2349'] , 
 ['Eb' , '2489'] , 
 ['E' , '2637'] , 
 ['F' , '2794'] , 
 ['F#' , '2960'] , 
 ['G' , '3136'] , 
 ['G#' , '3322'] , 
 ['A' , '3520'] , 
 ['Bb' , '3729'] , 
 ['B' , '3951'] , 
 ['C' , '4186'] , 
 ['C#' , '4435'] , 
 ['D' , '4699'] , 
 ['Eb' , '4978'] , 
 ['E' , '5274'] , 
 ['F' , '5588'] , 
 ['F#' , '5920'] , 
 ['G' , '6272'] , 
 ['G#' , '6645'] , 
 ['A' , '7040'] , 
 ['Bb' , '7459'] , 
 ['B' , '7902']  
                  ] ;

</script>