問題描述
這是在我的函數文件中使用的代碼 im:
add_action('init', 'sort_out_jquery_pngfix_frontend');
function sort_out_jquery_pngfix_frontend() {
global $wp_scripts;
if(!is_admin()) {
wp_deregister_script('jquery');
wp_register_script('jquery', 'https://googleajax.admincdn.com/ajax/libs/jquery/1/jquery.min.js', array(), NULL, true);
wp_register_script('dd_belatedpng', get_stylesheet_directory_uri() . '/js/dd_belatedpng.js', array(), NULL, true);
$wp_scripts->add_data('dd_belatedpng', 'conditional', 'lt IE 7');
}
}
add_action('wp_print_scripts', 'register_theme_scripts');
function register_theme_scripts() {
if(!is_admin()) {
wp_enqueue_script('modernizr', get_stylesheet_directory_uri() . '/js/modernizr-1.7.min.js', array(), NULL, false);
wp_enqueue_script('googlemaps', 'http://maps.google.com/maps/api/js?sensor=false', array(), NULL, true);
wp_enqueue_script('jquery');
wp_enqueue_script('dd_belatedpng');
wp_enqueue_script('sc_wc_js', get_stylesheet_directory_uri() . '/js/function.js', array('jquery', 'dd_belatedpng'), '1.0', true);
}
}
我使用 $wp_scripts->add_data('dd_belatedpng', 'conditional', 'lt IE 7'); 根據文檔我可以找到 on-line 但它不工作的腳本添加一個條件語句。條件代碼未顯示,但 js 文件是。
為什麼這不工作?
最佳解決方案
從快速查看代碼,這個條件只是似乎被處理為樣式而不是腳本。
次佳解決方案
這是一個漫長的鏡頭,但你可以嘗試註冊腳本,然後添加條件,然後排隊腳本:
// Register the script
wp_register_script( 'dd_belatedpng', get_stylesheet_directory_uri() . '/js/dd_belatedpng.js', array(), NULL, true );
// Attempt to add in the IE conditional tags
$wp_scripts->add_data('dd_belatedpng', 'conditional', 'lt IE 7');
// Enqueue the script
wp_enqueue_script( 'dd_belatedpng' );
我不知道它會奏效
編輯
根據相關的 Trac 門票,$wp_scripts 不支持此方法。
您可能只需將腳本從 wp_enqueue_script()系統中拉出,並將 IE conditional-enclosed 腳本調用回調到插入 wp_print_scripts 或 wp_head 的可插拔功能中。這肯定不是很理想,但是如果這是一個 single-use 客户端主題,那麼你不用擔心需要註銷腳本的人。
第三種解決方案
這是我不得不放下的工作,因為 WP 不支持我想要做的事情
的 functions.php
add_action('init', 'sort_out_jquery_pngfix_frontend');
function sort_out_jquery_pngfix_frontend() {
if(!is_admin()) {
wp_deregister_script('jquery');
wp_register_script('jquery', 'https://googleajax.admincdn.com/ajax/libs/jquery/1/jquery.min.js', array(), NULL, true);
wp_register_script('dd_belatedpng', get_stylesheet_directory_uri() . '/js/dd_belatedpng.js', array(), NULL, true);
}
}
add_action('wp_print_scripts', 'register_theme_scripts');
function register_theme_scripts() {
if(!is_admin()) {
wp_enqueue_script('modernizr', get_stylesheet_directory_uri() . '/js/modernizr-1.7.min.js', array(), NULL, false);
wp_enqueue_script('googlemaps', 'http://maps.google.com/maps/api/js?sensor=false', array(), NULL, true);
wp_enqueue_script('jquery');
wp_enqueue_script('sc_wc_js', get_stylesheet_directory_uri() . '/js/function.js', array('jquery'), '1.0', true);
}
}
footer.php
<?php wp_footer(); ?>
<!--[if lt IE 7]>
<?php wp_print_scripts(array('dd_belatedpng')); ?>
<script>DD_belatedPNG.fix("img, .png_bg");</script>
<![endif]-->
第四種方案
通過 $is_IE 在 wp-includes /vars.php 中找到了一個部分解決方案!
function emporium_enqueue_scripts() {
global $is_IE;
if( $is_IE ) {
wp_register_script( 'emporium-focus' , get_template_directory_uri() . '/library/focus.js', '', '', true );
wp_enqueue_script( 'emporium-focus' );
}
}
add_action('init', 'emporium_enqueue_scripts');
這似乎在 if IE 基礎上加載 library /focus.js,但是對於腳本來説,任何 IE 版本的條件都沒有內核。關於這個問題的 Trac ticket 似乎暫時擱置了。
參考文獻
注:本文內容整合自 Google/Baidu/Bing 輔助翻譯的英文資料結果。如果您對結果不滿意,可以加入我們改善翻譯效果:薇曉朵技術論壇。