summaryrefslogtreecommitdiff
path: root/bower_components/respond/cross-domain
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
parent046a20a5adabc15b6f910c2f3f66bb48a83067b7 (diff)
fixes #185, installs html5shiv/respond and downgrades jquery for ie8
Diffstat (limited to 'bower_components/respond/cross-domain')
-rw-r--r--bower_components/respond/cross-domain/example.html24
-rw-r--r--bower_components/respond/cross-domain/respond-proxy.html96
-rw-r--r--bower_components/respond/cross-domain/respond.proxy.gifbin0 -> 35 bytes
-rw-r--r--bower_components/respond/cross-domain/respond.proxy.js127
4 files changed, 247 insertions, 0 deletions
diff --git a/bower_components/respond/cross-domain/example.html b/bower_components/respond/cross-domain/example.html
new file mode 100644
index 00000000..700224e7
--- /dev/null
+++ b/bower_components/respond/cross-domain/example.html
@@ -0,0 +1,24 @@
+<!DOCTYPE html>
+<html>
+<head>
+ <meta charset="utf-8" />
+ <title>Respond JS Test Page</title>
+ <link href="https://rawgithub.com/scottjehl/Respond/master/test/test.css" rel="stylesheet"/>
+ <link href="https://rawgithub.com/scottjehl/Respond/master/test/test2.css" media="screen and (min-width: 600px)" rel="stylesheet"/>
+ <script src="../dest/respond.src.js"></script>
+
+ <!-- Respond.js proxy on external server -->
+ <link href="https://rawgithub.com/scottjehl/Respond/master/cross-domain/respond-proxy.html" id="respond-proxy" rel="respond-proxy" />
+ <link href="respond.proxy.gif" id="respond-redirect" rel="respond-redirect" />
+ <script src="respond.proxy.js"></script>
+</head>
+<body>
+ <p>This is a visual test file for cross-domain proxy.</p>
+
+ <p>The media queries in the included CSS file simply change the body's background color depending on the browser width. If you see any colors aside from black, then the media queries are working in your browser. You can resize your browser window to see it change on the fly.</p>
+
+
+ <p id="attribute-test">Media-attributes are working too! This should be visible above 600px.</p>
+
+</body>
+</html>
diff --git a/bower_components/respond/cross-domain/respond-proxy.html b/bower_components/respond/cross-domain/respond-proxy.html
new file mode 100644
index 00000000..f828a0a5
--- /dev/null
+++ b/bower_components/respond/cross-domain/respond-proxy.html
@@ -0,0 +1,96 @@
+<!-- Respond.js: min/max-width media query polyfill. Remote proxy (c) Scott Jehl. MIT/GPLv2 Lic. j.mp/respondjs -->
+<!DOCTYPE html>
+<html>
+<head>
+ <meta charset="utf-8" />
+ <title>Respond JS Proxy</title>
+</head>
+<body>
+ <script>
+ (function () {
+ var domain, css, query, getQueryString, ajax, xmlHttp;
+
+ /*
+ http://stackoverflow.com/questions/4963673/get-url-array-variables-in-javascript-jquery/4963817#4963817
+ */
+ getQueryString = function() {
+ var ret = {}, parts, i, p;
+
+ parts = (document.location.toString().split("?")[1]).split("&");
+
+ for (i = 0; i < parts.length; i++) {
+
+ p = parts[i].split("=");
+ // so strings will be correctly parsed:
+ p[1] = decodeURIComponent(p[1].replace(/\+/g, " "));
+
+ if (p[0].search(/\[\]/) >= 0) { // then it"s an array
+ p[0] = p[0].replace("[]", "");
+
+ if (typeof ret[p[0]] != "object") {
+ ret[p[0]] = [];
+ }
+ ret[p[0]].push(p[1]);
+ } else {
+ ret[p[0]] = p[1];
+ }
+ }
+ return ret;
+ };
+
+ ajax = function( url, callback ) {
+ var req = xmlHttp();
+ if (!req){
+ return;
+ }
+ req.open( "GET", url, true );
+ req.onreadystatechange = function () {
+ if ( req.readyState != 4 || req.status != 200 && req.status != 304 ){
+ return;
+ }
+ callback( req.responseText );
+ };
+ if ( req.readyState == 4 ){
+ return;
+ }
+ req.send();
+ };
+
+ //define ajax obj
+ xmlHttp = (function() {
+ var xmlhttpmethod = false,
+ attempts = [
+ function(){ return new XMLHttpRequest(); },
+ function(){ return new ActiveXObject("Microsoft.XMLHTTP"); },
+ function(){ return new ActiveXObject("MSXML2.XMLHTTP.3.0"); }
+ ],
+ al = attempts.length;
+
+ while( al-- ){
+ try {
+ xmlhttpmethod = attempts[ al ]();
+ }
+ catch(e) {
+ continue;
+ }
+ break;
+ }
+ return function(){
+ return xmlhttpmethod;
+ };
+ })();
+
+ query = getQueryString();
+ css = query["css"];
+ domain = query["url"];
+
+ if (css && domain) {
+ ajax(css, function (response) {
+ window.name = response;
+ window.location.href = domain;
+ });
+ }
+ }());
+ </script>
+</body>
+</html> \ No newline at end of file
diff --git a/bower_components/respond/cross-domain/respond.proxy.gif b/bower_components/respond/cross-domain/respond.proxy.gif
new file mode 100644
index 00000000..ced1c053
--- /dev/null
+++ b/bower_components/respond/cross-domain/respond.proxy.gif
Binary files differ
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 );