/* * jQuery Mobile Framework : support tests * Copyright (c) jQuery Project * Dual licensed under the MIT (MIT-LICENSE.txt) and GPL (GPL-LICENSE.txt) licenses. * Note: Code is in draft form and is subject to change */ ( function( $, undefined ) { var fakeBody = $( "" ).prependTo( "html" ), fbCSS = fakeBody[ 0 ].style, vendors = [ "webkit", "moz", "o" ], webos = "palmGetResource" in window, //only used to rule out scrollTop bb = window.blackberry; //only used to rule out box shadow, as it's filled opaque on BB // thx Modernizr function propExists( prop ){ var uc_prop = prop.charAt( 0 ).toUpperCase() + prop.substr( 1 ), props = ( prop + " " + vendors.join( uc_prop + " " ) + uc_prop ).split( " " ); for( var v in props ){ if( fbCSS[ v ] !== undefined ){ return true; } } } // test for dynamic-updating base tag support ( allows us to avoid href,src attr rewriting ) function baseTagTest(){ var fauxBase = location.protocol + "//" + location.host + location.pathname + "ui-dir/", base = $( "head base" ), fauxEle = null, href = ""; if ( !base.length ) { base = fauxEle = $( "", { "href": fauxBase} ).appendTo( "head" ); } else { href = base.attr( "href" ); } var link = $( "" ).prependTo( fakeBody ), rebase = link[ 0 ].href; base[ 0 ].href = href ? href : location.pathname; if ( fauxEle ) { fauxEle.remove(); } return rebase.indexOf( fauxBase ) === 0; } // non-UA-based IE version check by James Padolsey, modified by jdalton - from http://gist.github.com/527683 // allows for inclusion of IE 6+, including Windows Mobile 7 $.mobile.browser = {}; $.mobile.browser.ie = ( function() { var v = 3, div = document.createElement( "div" ), a = div.all || []; while ( div.innerHTML = "", a[ 0 ] ); return v > 4 ? v : !v; }() ); $.extend( $.support, { orientation: "orientation" in window, touch: "ontouchend" in document, cssTransitions: "WebKitTransitionEvent" in window, pushState: !!history.pushState, mediaquery: $.mobile.media( "only all" ), cssPseudoElement: !!propExists( "content" ), boxShadow: !!propExists( "boxShadow" ) && !bb, scrollTop: ( "pageXOffset" in window || "scrollTop" in document.documentElement || "scrollTop" in fakeBody[ 0 ] ) && !webos, dynamicBaseTag: baseTagTest(), eventCapture: ( "addEventListener" in document ) // This is a weak test. We may want to beef this up later. } ); fakeBody.remove(); // for ruling out shadows via css if( !$.support.boxShadow ){ $( "html" ).addClass( "ui-mobile-nosupport-boxshadow" ); } } )( jQuery );