2013-04-11 44 views
0

他,在那裏,我一直在嘗試幾個小時沒有線索(我使用Wordpress),很難知道jQuery有什麼問題。在Windows/Mac的FF和Chrome工作正常,IE讓我瘋狂。爲什麼我的jQuery不適用於IE(在Safari,Chrome和FF中正常工作)?

我使用的標題:

<!DOCTYPE html> 

這是我做的測試網頁:

http://newportal.no-ip.org/

這是我的JS代碼:

 jQuery(document).ready(function() { 

//Menu 
    jQuery("ul.menu").superfish({ 
      delay  : 100, 
      animation : {opacity:'show',height:'show'}, 
      //speed  : 10, 
      autoArrows : true, 
      dropShadows : false 
     }); 

//Popup FancyBox 
jQuery('.fancybox-media').fancybox({ 
     maxWidth : 800, 
     maxHeight : 600, 
     fitToView : false, 
     width  : '70%', 
     height  : '70%', 
     autoSize : false, 
     closeClick : false, 
     openEffect : 'none', 
     closeEffect : 'none' 
    }); 

jQuery('.fancybox').fancybox(); 

    var thumbnails = 'a:has(img)[hrefjQuery=".jpg"]'; 
    jQuery(thumbnails).addClass("fancybox").attr("rel","fancybox"); 


jQuery(".popup").fancybox({ 
     'width' : '75%', 
     'height' : '75%', 
     'autoScale' : false, 
     'transitionIn' : 'none', 
     'transitionOut' : 'none', 
     'type' : 'iframe' 
    }); 

//Expand 
jQuery('div.moexpander').hide(); 
    jQuery('a.moexpander').click(function(){ 
     jQuery(this).parent().next('div.moexpander').slideToggle(); 
     return false; 
    }); 

//Slideshow Destacados, Create an array of titles 
    var titles = jQuery('#cycle div.item').find("h3").map(function() { return jQuery(this).text(); }); 
    //Add an unordered list to contain the navigation 
    //Invoke the cycle plugin on #cycle 
    jQuery('#cycle').before('<ul id="pager" class="sprites bannerBg"></ul>').cycle({ 
     //Specify options 
     fx  :'fade', //Name of transition effect 
     speed : 600, 
     delay : -1200, 
     pause : 1, 
     pager : '#pager',  //Selector for element to use as pager container 
     pagerAnchorBuilder: function (index) {    //Build the pager 
     return '<li><a href="#">' + titles[index] + '</a></li>'; 
    }, 
    updateActivePagerLink: function(pager, currSlideIndex) { 
     jQuery(pager).find('li').removeClass('active').filter('li:eq('+currSlideIndex+')').addClass('active'); 
    } 
    }); 
    jQuery('#cycle').hover(function() { 
    jQuery('.pause').show(); 
    }, function() { 
     jQuery('.pause').hide(); 
    }); 


//Slideshow Voluntariado 
    jQuery('#cyclePopular').after('<div id="navPopular">') 
     .cycle({ 
    fx   : 'scrollHorz', 
    speed  : 'fast', 
    delay : -1200, 
    pause : 1, 
    pager  : '#navPopular' 
    }); 

//Slideshow Avisos 
    jQuery('#cycleAvisos').cycle({ 
    fx   : 'scrollHorz', 
    delay : -4000, 
    pause : 1, 
    prev: '#prev', 
    next: '#next', 
    pager  : '#navAvisos', 
    after: onAfter 
    }); 
//Make Avisos's Height auto-resizing  
    function onAfter(curr, next, opts, fwd) { 
     var jQueryht = jQuery(this).height(); 

     //set the container's height to that of the current slide 
     jQuery(this).parent().animate({height: jQueryht}); 
    } 

//Make all the block clickable 
jQuery("#link").click(function(){ 
    window.location=jQuery(this).find("a").attr("href"); 
    return false; 
});   

//Add CSS to Sidebar Pages 
jQuery('#sidebar-pages').find("li").before("<span class='sprites bulletR left'></span>"); 



// Tabs 
jQuery.fn.easytabs = function(){ 
//Default Action 
jQuery(this).find(".easytabs_content").hide(); //Hide all content 
jQuery(this).find("ul.easytabs li:first").addClass("active").show(); //Activate first tab 
jQuery(this).find(".easytabs_content:first").show(); //Show first tab content 
jQuery(this).find(".easytabs_content li a").before("<span class='sprites bulletR'></span>"); //Show bullets 

//On Click Event 
jQuery("ul.easytabs li").click(function() { 
jQuery(this).parent().parent().find("ul.easytabs li").removeClass("active"); //Remove any "active" class 
jQuery(this).addClass("active"); //Add "active" class to selected tab 
jQuery(this).parent().parent().find(".easytabs_content").hide(); //Hide all tab content 
var activeTab = jQuery(this).find("a").attr("href"); //Find the rel attribute value to identify the active tab + content 
jQuery(activeTab).fadeIn(); //Fade in the active content 
return false; 
}); 
};//end function 

jQuery("div[class^='easytabs']").easytabs(); //Run function on any div with class name of "easytabs" 

// Search animation with IE statements 
    var input = jQuery('input#s'); 
    var divInput = jQuery('div.input'); 
    var width = divInput.width(); 
    var outerWidth = divInput.parent().width() - (divInput.outerWidth() - width) - 28; 
    var submit = jQuery('#searchSubmit'); 
    var txt = input.val(); 

    input.bind('focus', function() { 
     if(input.val() === txt) { 
      input.val(''); 
     } 
     jQuery(this).animate({color: '#000'}, 300); // text color 
     jQuery(this).parent().animate({ 
      width: outerWidth + 'px', 
      backgroundColor: '#fff', // background color 
      paddingRight: '43px' 
     }, 300, function() { 
      if(!(input.val() === '' || input.val() === txt)) { 
       if(!(jQuery.browser.msie && jQuery.browser.version < 9)) { 
        submit.fadeIn(300); 
       } else { 
        submit.css({display: 'block'}); 
       } 
      } 
     }).addClass('focus'); 
    }).bind('blur', function() { 
     jQuery(this).animate({color: '#b4bdc4'}, 300); // text color 
     jQuery(this).parent().animate({ 
      width: width + 'px', 
      backgroundColor: '#e8edf1', // background color 
      paddingRight: '15px' 
     }, 300, function() { 
      if(input.val() === '') { 
       input.val(txt) 
      } 
     }).removeClass('focus'); 
     if(!(jQuery.browser.msie && jQuery.browser.version < 9)) { 
      submit.fadeOut(100); 
     } else { 
      submit.css({display: 'none'}); 
     } 
    }).keyup(function() { 
     if(input.val() === '') { 
      if(!(jQuery.browser.msie && jQuery.browser.version < 9)) { 
       submit.fadeOut(300); 
      } else { 
       submit.css({display: 'none'}); 
      } 
     } else { 
      if(!(jQuery.browser.msie && jQuery.browser.version < 9)) { 
       submit.fadeIn(300); 
      } else { 
       submit.css({display: 'block'}); 
      } 
     } 
    }); 

}); 

我真的很感謝你的幫助,

·H·

+3

你檢查過你的控制檯嗎?你有錯誤嗎?什麼不工作? – Dom 2013-04-11 16:20:22

+1

哪個功能不起作用?他們全部? – TiagoBrenck 2013-04-11 16:22:52

+4

什麼版本的jQuery?什麼版本的IE? – doublesharp 2013-04-11 16:24:25

回答

1

我看到,沒有得到很好的支持IE(或支撐在全部)2個方法的調用:

  • .hover
  • .slideToggle

所有的toggle功能具有粗略/不一致的跨瀏覽器支持。我會嘗試改變這種情況,特別是因爲slide效果實際上具有所有jQuery效果的最高開銷,並且在慢速瀏覽器(如IE - 尤其是舊版本)上顯而易見。

至於.hover,我建議你上閱讀和使用的.mouseenter.mouseleave.mousein.mouseout的組合。我不記得哪個,但其中兩個實際上是短手,但對它的支持很粗糙。其中之一是基於IE的內置設置,我不認爲這是.hover的縮寫。


更新1:

根據您的意見,我會建議爲你搜索.superFishfancybox插件的源代碼,以確保它們不使用fadeToopacity,作爲將完全破壞您的腳本,並且他們使用正確的操作技術,即與IE兼容的操作技術。

更新2:

.map()方法也是錯誤的。從其他代碼中,我可以看到您正在嘗試創建一個vanilla JavaScript數組,而不是一個jQuery數組。因此,您必須在.map()之後撥打.get()。我發現一個answer to another post,進一步解釋這一點。

更新3:

我希望我不傻,但我注意到這條線:

jQuery('div.moexpander').hide(); 
你有你建立一個點擊處理程序 jQuery('div.moexpander')權利之前

。問題是,我沒有看到任何地方打電話給jQuery('div.moexpander')。如果我是正確的,並且之後沒有再顯示它,則div.moexpander元素將永遠不會顯示,並且處理程序將永遠不會被使用。我不知道這對你的代碼/問題有多重要,因爲我仍然不知道你的症狀,但這可能是一個錯誤。

UPDATE 4:

而且,只要我們正在調試,您應該通過您的代碼運行,並終止與分號每個函數聲明。例如,更改:

function someFunct() { 
    ..... 
} 

function someFunct() { 
    ..... 
}; 

雖然這不是在JavaScript中必需的,但在此將影響/影響你的腳本,並在某些情況下,許多情況下,崩潰他們。

說實話,我不完全明白爲什麼會出現這種情況,但我遇到過這種情況,我認爲其中一些問題出現在IE中。

更新5:

如果仍然沒有工作,在jQuery的論壇,與涉及的fancybox IE加載問題涉及退房this thread

+0

請問爲什麼你認爲'hover()'和'slideToggle()'在IE中被破壞?根據我的經驗,他們在6到10(jQuery 1.9)或9到10(jQuery 2.0)的IE上工作得很好。 – 2013-04-11 16:28:46

+0

讓我試試你的解決方案。感謝您的回覆。 – Huroman 2013-04-11 16:31:59

+0

@FrédéricHamidi - 自1.8.3+版本以來,我還沒有評論'.hover'和'.slideToggle'的更新,因爲我在1.7.2中停止使用它們,並且在那段時間之間沒有更新(或者至少沒有更新)和1.8.2。自那時起可能引入新的變化,但是,特別是由於OP沒有指定版本,我認爲這是明智的。要直接回答你的問題,所有'toggle'方法都存在跨瀏覽器問題,特別是在IE中。如果事件快速重複,或者頁面的腳本需要大量開銷,這些問題會變得更糟。 – 2013-04-11 16:33:46

相關問題