]> git.ipfire.org Git - thirdparty/bootstrap.git/commitdiff
use @ssorallen's blob support test in customizer; fixes #12617
authorChris Rebert <code@rebertia.com>
Tue, 18 Feb 2014 09:45:58 +0000 (01:45 -0800)
committerChris Rebert <code@rebertia.com>
Mon, 17 Mar 2014 05:37:31 +0000 (22:37 -0700)
docs/assets/js/src/customizer.js
docs/customize.html

index 4ce304f1a1bbaaa0f6e1d0f66993bb326ee4055e..cee3c5766dd59f189a816da55da785cf74a52436 100644 (file)
@@ -327,20 +327,42 @@ window.onload = function () { // wait for load in a dumb way because B-0
       saveAs(blob, 'bootstrap.zip')
       createGist(configJson)
     })
-  })
-
-  // browser support alerts
-  if (!window.URL && navigator.userAgent.toLowerCase().indexOf('safari') != -1) {
-    showCallout('Looks like you\'re using safari, which sadly doesn\'t have the best support' +
-                 'for HTML5 blobs. Because of this your file will be downloaded with the name <code>"untitled"</code>.' +
-                 'However, if you check your downloads folder, just rename this <code>"untitled"</code> file' +
-                 'to <code>"bootstrap.zip"</code> and you should be good to go!')
-  } else if (!window.URL && !window.webkitURL) {
-    $('.bs-docs-section, .bs-docs-sidebar').css('display', 'none')
-
-    showCallout('Looks like your current browser doesn\'t support the Bootstrap Customizer. Please take a second' +
-                 'to <a href="https://www.google.com/intl/en/chrome/browser/">upgrade to a more modern browser</a>.', true)
-  }
+  });
+
+  // browser support alert
+  (function () {
+    function failback() {
+      $('.bs-docs-section, .bs-docs-sidebar').css('display', 'none')
+      showCallout('Looks like your current browser doesn\'t support the Bootstrap Customizer. Please take a second ' +
+                    'to <a href="http://browsehappy.com/">upgrade to a more modern browser</a> (other than Safari).', true)
+    }
+    /**
+     * Based on:
+     *   Blob Feature Check v1.1.0
+     *   https://github.com/ssorallen/blob-feature-check/
+     *   License: Public domain (http://unlicense.org)
+     */
+    var url = window.webkitURL || window.URL // Safari 6 uses "webkitURL".
+    var svg = new Blob(
+      ['<svg xmlns=\'http://www.w3.org/2000/svg\'></svg>'],
+      {type: 'image/svg+xml;charset=utf-8'}
+    )
+    var objectUrl = url.createObjectURL(svg);
+    if (/^blob:/.exec(objectUrl) === null) {
+      // `URL.createObjectURL` created a URL that started with something other
+      // than "blob:", which means it has been polyfilled and is not supported by
+      // this browser.
+      failback()
+    }
+    else {
+      $('<img>')
+        .on('load', function () {
+          $compileBtn.prop('disabled', false)
+        })
+        .on('error', failback)
+        .attr('src', objectUrl)
+    }
+  })();
 
   parseUrl()
 }
index 3e29227bb5ca3491c0e905a76280e7206273e47d..a36cbdf32decf10ce0c67fe7f2ac94a4150a7d40 100644 (file)
@@ -356,7 +356,7 @@ lead: Customize Bootstrap's components, Less variables, and jQuery plugins to ge
 
     <p class="lead">Hooray! Your custom version of Bootstrap is now ready to be compiled. Just click the button below to finish the process.</p>
     <div class="bs-customize-download">
-      <button type="submit" id="btn-compile" class="btn btn-block btn-lg btn-outline" onclick="_gaq.push(['_trackEvent', 'Customize', 'Download', 'Customize and Download']);">Compile and Download</button>
+      <button type="submit" id="btn-compile" disabled class="btn btn-block btn-lg btn-outline" onclick="_gaq.push(['_trackEvent', 'Customize', 'Download', 'Customize and Download']);">Compile and Download</button>
     </div>
   </div><!-- /download -->
 </form>