summaryrefslogtreecommitdiff
path: root/bower_components/respond/cross-domain/respond.proxy.js
diff options
context:
space:
mode:
authorThomas Park <thomas@thomaspark.me>2013-12-24 17:03:28 -0500
committerThomas Park <thomas@thomaspark.me>2013-12-24 17:03:28 -0500
commit9bf0a9d13e1d0938e47847db0487f0f0fce0d8b3 (patch)
tree6fdb29e14a983125ba18652546068a087244510f /bower_components/respond/cross-domain/respond.proxy.js
parent046a20a5adabc15b6f910c2f3f66bb48a83067b7 (diff)
fixes #185, installs html5shiv/respond and downgrades jquery for ie8
Diffstat (limited to 'bower_components/respond/cross-domain/respond.proxy.js')
-rw-r--r--bower_components/respond/cross-domain/respond.proxy.js127
1 files changed, 127 insertions, 0 deletions
diff --git a/bower_components/respond/cross-domain/respond.proxy.js b/bower_components/respond/cross-domain/respond.proxy.js
new file mode 100644
index 00000000..e9422cb7
--- /dev/null
+++ b/bower_components/respond/cross-domain/respond.proxy.js
@@ -0,0 +1,127 @@
+/*! Respond.js: min/max-width media query polyfill. Remote proxy (c) Scott Jehl. MIT/GPLv2 Lic. j.mp/respondjs */
+(function(win, doc, undefined){
+ var docElem = doc.documentElement,
+ proxyURL = doc.getElementById("respond-proxy").href,
+ redirectURL = (doc.getElementById("respond-redirect") || location).href,
+ baseElem = doc.getElementsByTagName("base")[0],
+ urls = [],
+ refNode;
+
+ function encode(url){
+ return win.encodeURIComponent(url);
+ }
+
+ function fakejax( url, callback ){
+
+ var iframe,
+ AXO;
+
+ // All hail Google http://j.mp/iKMI19
+ // Behold, an iframe proxy without annoying clicky noises.
+ if ( "ActiveXObject" in win ) {
+ AXO = new ActiveXObject( "htmlfile" );
+ AXO.open();
+ AXO.write( '<iframe id="x"></iframe>' );
+ AXO.close();
+ iframe = AXO.getElementById( "x" );
+ } else {
+ iframe = doc.createElement( "iframe" );
+ iframe.style.cssText = "position:absolute;top:-99em";
+ docElem.insertBefore(iframe, docElem.firstElementChild || docElem.firstChild );
+ }
+
+ iframe.src = checkBaseURL(proxyURL) + "?url=" + encode(redirectURL) + "&css=" + encode(checkBaseURL(url));
+
+ function checkFrameName() {
+ var cssText;
+
+ try {
+ cssText = iframe.contentWindow.name;
+ }
+ catch (e) { }
+
+ if (cssText) {
+ // We've got what we need. Stop the iframe from loading further content.
+ iframe.src = "about:blank";
+ iframe.parentNode.removeChild(iframe);
+ iframe = null;
+
+
+ // Per http://j.mp/kn9EPh, not taking any chances. Flushing the ActiveXObject
+ if (AXO) {
+ AXO = null;
+
+ if (win.CollectGarbage) {
+ win.CollectGarbage();
+ }
+ }
+
+ callback(cssText);
+ }
+ else{
+ win.setTimeout(checkFrameName, 100);
+ }
+ }
+
+ win.setTimeout(checkFrameName, 500);
+ }
+
+ function checkBaseURL(href) {
+ if (baseElem && href.indexOf(baseElem.href) === -1) {
+ bref = (/\/$/).test(baseElem.href) ? baseElem.href : (baseElem.href + "/");
+ href = bref + href;
+ }
+
+ return href;
+ }
+
+ function checkRedirectURL() {
+ // IE6 & IE7 don't build out absolute urls in <link /> attributes.
+ // So respond.proxy.gif remains relative instead of http://example.com/respond.proxy.gif.
+ // This trickery resolves that issue.
+ if (~ !redirectURL.indexOf(location.host)) {
+
+ var fakeLink = doc.createElement("div");
+
+ fakeLink.innerHTML = '<a href="' + redirectURL + '"></a>';
+ docElem.insertBefore(fakeLink, docElem.firstElementChild || docElem.firstChild );
+
+ // Grab the parsed URL from that dummy object
+ redirectURL = fakeLink.firstChild.href;
+
+ // Clean up
+ fakeLink.parentNode.removeChild(fakeLink);
+ fakeLink = null;
+ }
+ }
+
+ function buildUrls(){
+ var links = doc.getElementsByTagName( "link" );
+
+ for( var i = 0, linkl = links.length; i < linkl; i++ ){
+
+ var thislink = links[i],
+ href = links[i].href,
+ extreg = (/^([a-zA-Z:]*\/\/(www\.)?)/).test( href ),
+ ext = (baseElem && !extreg) || extreg;
+
+ //make sure it's an external stylesheet
+ if( thislink.rel.indexOf( "stylesheet" ) >= 0 && ext ){
+ (function( link ){
+ fakejax( href, function( css ){
+ link.styleSheet.rawCssText = css;
+ respond.update();
+ } );
+ })( thislink );
+ }
+ }
+
+
+ }
+
+ if( !respond.mediaQueriesSupported ){
+ checkRedirectURL();
+ buildUrls();
+ }
+
+})( window, document );