2013-04-30 48 views
-1

的IE叉執行我有一個像如果定時功能

$(document).ready(function(){ 
    $(function() { 
     window.setTimeout(function() { 
      if(getInternetExplorerVersion() != -1){ 
       //do not friendly IE stuff 
          ie_browsers();   
      }else{ 
       other_browsers(); 
      } 

         setInterval(other_browsers, 32000); 
     }, 800); 
    }); 
    ... 

一個代碼來檢測IE瀏覽器,我有

function getInternetExplorerVersion(){ 
     var rv = -1; 
     if (navigator.appName == 'Microsoft Internet Explorer'){ 
      var ua = navigator.userAgent; 
      var re = new RegExp("MSIE ([0-9]{1,}[\.0-9]{0,})"); 
      if (re.exec(ua) != null) 
       rv = parseFloat(RegExp.$1); 
     } 
      return rv; 
    } 

我的問題是我在哪裏必須把指令setInterval(other_browsers, 32000);

我必須把裏面的else語句和其他ie_browsers();裏面嗎?

目的是執行每32秒功能800毫秒的延遲..

+1

這通常是一個壞主意,無論是時間間隔和瀏覽器嗅探。創建功能檢測代碼,或者使用類似modernizer的庫代替! – adeneo 2013-04-30 21:19:49

+0

好吧,這裏的問題是我需要修補IE功能,所有的瀏覽器都能正常工作...... – cMinor 2013-04-30 21:21:03

+1

「$(function(){...}}」是$(document).ready(function(){)的簡寫。 ..}),你正在嵌套它 – 2013-04-30 21:21:20

回答

3

的這種一般預留了可疑的性質(我會留給您的意見)。如果我理解你的要求,你可以做以下,以避免重複你的setIntervalifelse

$(function() { 
    window.setTimeout(function() { 
     var func; 
     if(getInternetExplorerVersion() != -1){ 
      //do not friendly IE stuff 
      func = ie_browsers; 
     }else{ 
      func = other_browsers; 
     } 

     // call once now 
     func(); 

     // call repeatedly on an interval 
     setInterval(func, 32000); 
    }, 800); 
}); 
+0

究竟需要什麼 – cMinor 2013-04-30 21:29:58