JavaScript clean up

- Modernizr is now enqueued and included after stylesheets

- jQuery is no longer hardcoded since WP now supports protocol-relative
URLs

- jQuery fallback output is handled by a new function in lib/scripts.php
(the method is still the same one from HTML5 Boilerplate)
This commit is contained in:
Ben Word
2013-02-04 22:16:31 -06:00
parent 5b9b7c64f1
commit 56f25ff00a
4 changed files with 30 additions and 12 deletions

View File

@@ -9,8 +9,8 @@
* 4. /child-theme/style.css (if a child theme is activated)
*
* Enqueue scripts in the following order:
* 1. /theme/assets/js/vendor/modernizr-2.6.2.min.js (in head.php)
* 2. jquery-1.9.0.min.js via Google CDN (in head.php)
* 1. /theme/assets/js/vendor/modernizr-2.6.2.min.js
* 2. jquery-1.9.0.min.js via Google CDN
* 3. /theme/assets/js/plugins.js
* 4. /theme/assets/js/main.js
*/
@@ -26,21 +26,44 @@ function roots_scripts() {
}
// jQuery is loaded in header.php using the same method from HTML5 Boilerplate:
// Grab Google CDN's jQuery, with a protocol relative URL; fall back to local if offline
// Grab Google CDN's latest jQuery with a protocol relative URL; fall back to local if offline
// It's kept in the header instead of footer to avoid conflicts with plugins.
if (!is_admin()) {
wp_deregister_script('jquery');
wp_register_script('jquery', '', '', '1.9.0', false);
wp_register_script('jquery', '//ajax.googleapis.com/ajax/libs/jquery/1.9.0/jquery.min.js', array('modernizr'), null, false);
}
if (is_single() && comments_open() && get_option('thread_comments')) {
wp_enqueue_script('comment-reply');
}
wp_register_script('modernizr', get_template_directory_uri() . '/assets/js/vendor/modernizr-2.6.2.min.js', false, null, false);
wp_register_script('roots_plugins', get_template_directory_uri() . '/assets/js/plugins.js', false, null, false);
wp_register_script('roots_main', get_template_directory_uri() . '/assets/js/main.js', false, null, false);
wp_enqueue_script('modernizr');
wp_enqueue_script('jquery');
wp_enqueue_script('roots_plugins');
wp_enqueue_script('roots_main');
}
add_action('wp_enqueue_scripts', 'roots_scripts', 100);
// http://wordpress.stackexchange.com/a/12450
function roots_jquery_local_fallback($src, $handle) {
static $add_jquery_fallback = false;
if ($add_jquery_fallback) {
echo '<script>window.jQuery || document.write(\'<script src="' . get_template_directory_uri() . '/assets/js/vendor/jquery-1.9.0.min.js"><\/script>\')</script>' . "\n";
$add_jquery_fallback = false;
}
if ($handle === 'jquery') {
$add_jquery_fallback = true;
}
return $src;
}
if (!is_admin()) {
add_filter('script_loader_src', 'roots_jquery_local_fallback', 10, 2);
}