From: Anthony McLin Date: Thu, 23 Apr 2015 23:28:42 +0000 (-0700) Subject: Update embedded matchMedia polyfill to latest v0.2.0 X-Git-Tag: v5.5.2~21^2^2 X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=refs%2Fpull%2F6497%2Fhead;p=thirdparty%2Ffoundation%2Ffoundation-sites.git Update embedded matchMedia polyfill to latest v0.2.0 --- diff --git a/js/foundation/foundation.js b/js/foundation/foundation.js index 06cb9e95e..46a8a826e 100644 --- a/js/foundation/foundation.js +++ b/js/foundation/foundation.js @@ -157,42 +157,52 @@ } }; - /* - https://github.com/paulirish/matchMedia.js - */ + /*! matchMedia() polyfill - Test a CSS media type/query in JS. Authors & copyright (c) 2012: Scott Jehl, Paul Irish, Nicholas Zakas, David Knight. Dual MIT/BSD license */ - window.matchMedia = window.matchMedia || (function ( doc ) { + window.matchMedia || (window.matchMedia = function() { + "use strict"; - 'use strict'; + // For browsers that support matchMedium api such as IE 9 and webkit + var styleMedia = (window.styleMedia || window.media); - var bool, - docElem = doc.documentElement, - refNode = docElem.firstElementChild || docElem.firstChild, - // fakeBody required for - fakeBody = doc.createElement( 'body' ), - div = doc.createElement( 'div' ); + // For those that don't support matchMedium + if (!styleMedia) { + var style = document.createElement('style'), + script = document.getElementsByTagName('script')[0], + info = null; - div.id = 'mq-test-1'; - div.style.cssText = 'position:absolute;top:-100em'; - fakeBody.style.background = 'none'; - fakeBody.appendChild(div); + style.type = 'text/css'; + style.id = 'matchmediajs-test'; - return function (q) { + script.parentNode.insertBefore(style, script); - div.innerHTML = '­'; + // 'style.currentStyle' is used by IE <= 8 and 'window.getComputedStyle' for all other browsers + info = ('getComputedStyle' in window) && window.getComputedStyle(style, null) || style.currentStyle; - docElem.insertBefore( fakeBody, refNode ); - bool = div.offsetWidth === 42; - docElem.removeChild( fakeBody ); + styleMedia = { + matchMedium: function(media) { + var text = '@media ' + media + '{ #matchmediajs-test { width: 1px; } }'; - return { - matches : bool, - media : q - }; + // 'style.styleSheet' is used by IE <= 8 and 'style.textContent' for all other browsers + if (style.styleSheet) { + style.styleSheet.cssText = text; + } else { + style.textContent = text; + } - }; + // Test if media query is true or false + return info.width === '1px'; + } + }; + } - }( document )); + return function(media) { + return { + matches: styleMedia.matchMedium(media || 'all'), + media: media || 'all' + }; + }; + }()); /* * jquery.requestAnimationFrame