2016-07-08 6 views
-1

querySelector 기능은 IE8에서 작업하지만, 같은 INT IE (11)를 작동하지 이하일부는 IE8에서 작동하지

코드 :

$(document).ready(
     function() { 

      $(window).load(
        function() { 
         var fiveMinutes = 60 * 15, display = document 
           .querySelector('#time'); 
         startTimer(fiveMinutes, display); 
        }); 

      function startTimer(duration, display) { 
       var timer = duration, minutes, seconds; 
       setInterval(function() { 
        minutes = parseInt(timer/60, 10) 
        seconds = parseInt(timer % 60, 10); 

        minutes = minutes < 10 ? "0" + minutes : minutes; 
        seconds = seconds < 10 ? "0" + seconds : seconds; 

        display.textContent = minutes + ":" + seconds; 

        if (--timer < 0) { 
         timer = duration; 
        } 
       }, 1000); 
      } 

HTML 코드 :

<div > 
    <div id ="timer"> 
     Next Refresh will be in <span id="time">05:00</span> minutes! 
    </div> 
    <div> 
+1

은 (https://developer.mozilla.org/en-US/docs/Web/API/Document/querySelector) 호환성을 조회하기 위해서는 IE8 사용할 수 있다고 'querySelector'하지만, [CanIUse] (http://caniuse.com/#feat=queryselector)로 후속 조치를 취하면 IE8에서는'querySelector'가 제한적이라는 것을 알 수 있습니다. 대신에'document.getElementById'를 사용하십시오. –

답변

3

HTMLElement#textContent은 IE8에서 지원되지 않습니다.

jQuery를 사용하고 있습니다. jQuery를 사용하여 원래 012와 일치하지 않는 브라우저의 불일치 (절반 만이 더 이상 존재하지 않음)를 처리 한 이유 중 절반은   —입니다.

최소한의 변화는 당신이 그 코드와 다른 문제의 몇 가지있다

display.textContent = minutes + ":" + seconds; 


$(display).text(minutes + ":" + seconds); 

에 변경하는 것입니다. 특히, 당신은 먹이를 떨어 뜨려 The Horror of Implicit Globals   — 변수를 선언하십시오! 그리고 querySelector을 사용하는 대신 jQuery를 사용하여 요소를 찾을 수 있습니다. 그래서 : 당신이 [MDN]을 사용하는 경우

$(document).ready(
    function() { 

     $(window).load(
      function() { 
       var fiveMinutes = 60 * 15, 
        display = $("#time");   // Use jQuery to look this up 
       startTimer(fiveMinutes, display); 
      }); 

     function startTimer(duration, display) { 
      var timer = duration, 
       minutes, seconds; 
      setInterval(function() { 
       // Note the variable declarations 
       var minutes = parseInt(timer/60, 10) 
       var seconds = parseInt(timer % 60, 10); 

       minutes = minutes < 10 ? "0" + minutes : minutes; 
       seconds = seconds < 10 ? "0" + seconds : seconds; 

       display.text(minutes + ":" + seconds);  // Use text() to set the text 

       if (--timer < 0) { 
        timer = duration; 
       } 
      }, 1000); 
     } 
    } 
);