mirror of
https://github.com/Hopiu/jquery-mobile.git
synced 2026-03-16 22:10:25 +00:00
50 lines
1.7 KiB
JavaScript
50 lines
1.7 KiB
JavaScript
//>>excludeStart("jqmBuildExclude", pragmas.jqmBuildExclude);
|
|
//>>description: A workaround for browsers without window.matchMedia
|
|
//>>label: matchMedia Polyfill
|
|
|
|
define( [ "jquery", "./jquery.mobile.core" ], function( $ ) {
|
|
//>>excludeEnd("jqmBuildExclude");
|
|
(function( $, undefined ) {
|
|
|
|
var $window = $( window ),
|
|
$html = $( "html" );
|
|
|
|
/* $.mobile.media method: pass a CSS media type or query and get a bool return
|
|
note: this feature relies on actual media query support for media queries, though types will work most anywhere
|
|
examples:
|
|
$.mobile.media('screen') // tests for screen media type
|
|
$.mobile.media('screen and (min-width: 480px)') // tests for screen media type with window width > 480px
|
|
$.mobile.media('@media screen and (-webkit-min-device-pixel-ratio: 2)') // tests for webkit 2x pixel ratio (iPhone 4)
|
|
*/
|
|
$.mobile.media = (function() {
|
|
// TODO: use window.matchMedia once at least one UA implements it
|
|
var cache = {},
|
|
testDiv = $( "<div id='jquery-mediatest'>" ),
|
|
fakeBody = $( "<body>" ).append( testDiv );
|
|
|
|
return function( query ) {
|
|
if ( !( query in cache ) ) {
|
|
var styleBlock = document.createElement( "style" ),
|
|
cssrule = "@media " + query + " { #jquery-mediatest { position:absolute; } }";
|
|
|
|
//must set type for IE!
|
|
styleBlock.type = "text/css";
|
|
|
|
if ( styleBlock.styleSheet ){
|
|
styleBlock.styleSheet.cssText = cssrule;
|
|
} else {
|
|
styleBlock.appendChild( document.createTextNode(cssrule) );
|
|
}
|
|
|
|
$html.prepend( fakeBody ).prepend( styleBlock );
|
|
cache[ query ] = testDiv.css( "position" ) === "absolute";
|
|
fakeBody.add( styleBlock ).remove();
|
|
}
|
|
return cache[ query ];
|
|
};
|
|
})();
|
|
|
|
})(jQuery);
|
|
//>>excludeStart("jqmBuildExclude", pragmas.jqmBuildExclude);
|
|
});
|
|
//>>excludeEnd("jqmBuildExclude");
|