使用两个回退加载jQuery

时间:2013-01-08 作者:AndrettiMilas

CSS技巧建议this code 加载jQuery。

然而,我很好奇是否有人在函数中做过同样的事情。php与two fallbacks: the Microsoft hosted jQuery being the first option and locally hosted jQuery being the second, 也就是说,如果谷歌图书馆决定不加载/崩溃/被北极熊吃掉等。

if (!is_admin()) add_action("wp_enqueue_scripts", "my_jquery_enqueue", 11);
function my_jquery_enqueue() {
   wp_deregister_script(\'jquery\');
   wp_register_script(\'jquery\', "http" . ($_SERVER[\'SERVER_PORT\'] == 443 ? "s" : "") . "://ajax.googleapis.com/ajax/libs/jquery/1.7.1/jquery.min.js", false, null);
   wp_enqueue_script(\'jquery\');
}

3 个回复
最合适的回答,由SO网友:Jared Cobb 整理而成

我使用类似的模式将jQuery从Google CDN排队(如CSS技巧示例)。但是在我的页脚中(通常footer.php) 我通常会硬编码以下回退。

<script type="text/javascript">
    if (typeof jQuery === \'undefined\') {
        document.write(\'<script src="<?php echo get_stylesheet_directory_uri(); ?>/js/jquery.min.js" type="text/javascript"><\\/script>\');
    }
</script>
让我解释一下它的作用以及我为什么使用它。。。

在取消注册、注册和排队jQuery之后,它将在渲染时注入DOM。脚本示例需要包含在WordPress renderes wp\\u header或wp\\u footer(无论您如何排队)之后。

该脚本将检查jQuery是否实际上是一个对象(如果不是,则由于404错误或其他原因而无法定义)。然后它将写出一个要加载的脚本标记your own 主题中jQuery的副本。

如果第一个CDN加载失败怎么办?这是否意味着WordPress会认为jQuery没有加载?不知道。WordPress不会知道CDN的失败,但它仍然会认为某种外部资源正在注册和排队(作为jQuery),您仍然可以享受到与其他请求jQuery的插件打交道的好处。

然而,我还没有尝试创建一种方法来尝试从Google的CDN加载,然后再从Microsoft的CDN加载,然后再从我自己的CDN加载。我必须进一步考虑一种异步尝试的好方法。

SO网友:Wyck

扩展Jared Cobb在钩子和更简单的检查中所写的内容。

function inline_78740_jquery(){ ?>

<script type="text/javascript">
!window.jQuery && document.write(\'<script src="/wp-includes/js/jquery/jquery.js"><\\/script>\')
</script>

<?php }
add_action(\'wp_footer\', \'inline_78740_jquery\', 1);
如果有插件连接到wp_enqueue_script 它们可能仍会断裂,尤其是它们正在使用$deps.

另外,我删除了src 因为您可以使用主题目录或wp includes函数includes_url, 例如

老实说,本地加载Jquery所提供的小占用空间通常是使用CDN的更好解决方案,这样您就不必担心回退或过时的CDN。

支持本地加载!

SO网友:Simon Hayter

据我所知,他们的职能没有退步。php,它的功能。php正在告诉JQUERY不要在本地加载,而是通过CDN加载,以确保没有插件可以第二次将其挂接。

如果您正在寻找类似的代码,但遇到了倒退,请执行以下操作:

if( !is_admin()){ // Disabled for Admin Area to Avoid Conflicts
$url = \'http://ajax.googleapis.com/ajax/libs/jquery/1.6.2/jquery.min.js\'; // the URL to check against
$test_url = @fopen($url,\'r\'); // Requires FOPEN
if($test_url !== false) { // Tests to see if URL Exists
function load_external_jQuery() { // Loads the remote file
wp_deregister_script( \'jquery\' ); // deregisters the default WordPress jQuery
wp_register_script(\'jquery\', \'http://ajax.googleapis.com/ajax/libs/jquery/1.7.1/jquery.min.js\'); // register the external file
wp_enqueue_script(\'jquery\'); // enqueue the remote file
}
add_action(\'wp_enqueue_scripts\', \'load_external_jQuery\'); // initiate the function
} else {
function load_local_jQuery() {
wp_deregister_script(\'jquery\'); // deregisters the default WordPress jQuery
wp_register_script(\'jquery\', get_bloginfo(\'template_url\').\'/js/jquery-1.7.1.min.js\', __FILE__, false, \'1.6.2\', true); // register the local file
wp_enqueue_script(\'jquery\'); // enqueue the local file
}
add_action(\'wp_enqueue_scripts\', \'load_local_jQuery\'); // initiate the function
}
}

结束

相关推荐

仅在一个页面/帖子中使用jQuery插件

我已经看过了抄本中的所有文档,但我做错了,因为它不起作用!我想实现这个jQuery插件(https://github.com/davidcrawford/typist-jquery) 在我的欢迎页面中(www.english.intermediavs.com).我在函数中添加了此代码。php:function my_typist() { if (!is_admin()) { wp_enqueue_script(\'jquery\');