2011-10-06 3 views
2

다음 코드는 FireFox에서 의도 한대로 표시되지만 Internet Explorer (v8)에서는 전혀 표시되지 않습니다.IE JS 호환성 - FF로 작업 하시겠습니까?

 // getLimits init 
     Frog.API.get('users.getInfo', 
     { 
      'params': {'id': UWA.Environment.user.id, 'details':'groups' }, 
      'onSuccess': AssignPoints.getLimit, 
      'onError': function(err) { alert(err); } 
     }); 

...

// work out the user's limit, and how many points they've spent this week 
    // use LEAP library if necessary 
    AssignPoints.getLimit = function(data) { 
     for (var i in data[0].groups) { 
      if (data[0].groups[i].name.indexOf("LEAP") != -1) { 
       AssignPoints.Limit = data[0].groups[i].name.substr(5,3); 
      } 
     } 
/************** IT'S THIS LINE ONWARDS WHERE THE ALERTS SEEM TO BREAK IN IE */ 
     if (AssignPoints.Limit == 0) { 
      AssignPoints.Specialist = true; 
     } 

     UWA.Data.getJson(AssignPoints.URL + "?cmd=getLimitsAndTotals&Giver_ID=" + AssignPoints.CurrentUser, AssignPoints.getPointsSpent); 
    } 

    AssignPoints.getPointsSpent = function(data) { 
     AssignPoints.SpentWeekly = data.SpentWeekly; 
     AssignPoints.SpentTotal = data.SpentTotal; 

     AssignPoints.displayLimitAndTotals(); 
    } 

    // display data from getLimitAndTotals 
    AssignPoints.displayLimitAndTotals = function() { 
     var LimitsAndTotalsHTML = '<h2>Points Allocation</h2>'; 

     if (AssignPoints.Specialist == false) { 
      LimitsAndTotalsHTML += '<ul><li>Weekly Limit: <strong>' + AssignPoints.Limit + '</strong></li>'; 
     } else { 
      LimitsAndTotalsHTML += '<ul><li>Weekly Limit: <strong>Unlimited</strong></li>'; 
     } 

     LimitsAndTotalsHTML += '<li>Spent this week: <strong style="color:#990000;">' + AssignPoints.SpentWeekly + '</strong></li>' + 
      '<li>Spent total: <strong>' + AssignPoints.SpentTotal + '</strong></li></ul>'; 

     $('div#limits').html(LimitsAndTotalsHTML); 
    } 

편집 : CSS & HTML 나는하는 CSS/HTML 문제를 생각하지 않습니다 나는 (내가 결정하는이 스크립트의 이전 버전을 가지고 그것은 똑같은 HTML & CSS를 사용하여 정확하게 IE에서 올바르게 표시되는 끔찍한 코드와 절차 적이며 순수한 침입의 이상한 매쉬업 이었기 때문에 다시 작성했습니다.

#total_container 
{ overflow: hidden; width: 870px; } 

#groups 
{ width: 250px; float: left; padding: 10px; } 
#right_container 
{ width: 580px; float: left; padding: 10px; } 

span.check 
{ font-size: 10px; color: #666; } 
span.err 
{ color: red; font-weight: 700; } 

#limits, #search_div 
{ width: 270px; float:left; padding: 0 10px; } 


#groups li, #groups ul 
{ list-style-type: none; background: none; margin: 0; padding: 0; } 
#groups li a 
{ background-color: #999; color: #eee; display: block; margin: 5px 0; border: #666; padding: 8px 2px 8px 10px; width: 243px; } 
#groups li a:hover 
{ background-color: #990000; } 

HTML은 단지 <div id="limits"></div>이며 JS가이를 업데이트합니다.

// EDIT

SECOND 편집 : 에이전트

나는 코드에 임의의 경고를 넣어 시도했습니다. IE에서는 for (var i in data[0].groups) 루프에서 경고가 작동합니다. 그 for 루프 이후에 아무 곳이나 경고를하면, 변수 이름이나 "test"과 같은 임의의 문자열을 사용하는지 여부에 관계없이 경고가 전혀 표시되지 않습니다.

FF에서는 경고가 두 기능의 배치에 관계없이 작동합니다. 구성 FireFox, working as intended

인터넷 익스플로러로 일하고 ** // SECOND 편집 **

파이어 폭스

는, 을 b0rked Internet Explorer, b0rked

사람이 IE를 파괴 할 수있는 무엇을 알고 있나요?

미리 감사드립니다.

+0

아마 이것은 javascript보다는 html과 css와 관련이 있다고 가정합니다. html을 제공 할 수 있습니까? 어쩌면 jsfiddle.net일까요? – jackJoe

+0

JSFiddle은 내가 작업중인 Frog API 때문에 작동하지 않습니다. 나는 CSS로 원래 게시물을 업데이트 하겠지만 동일한 HTML/CSS를 사용하여 IE에서 올바르게 표시되는 파일의 원본 버전을 가지고 있습니다 (끔찍한 코드이기 때문에 다시 작성했습니다). – dunc

+0

그리고 렌더링 된 html을 저장하면 IE8에서 올바르게 표시됩니까? 또한 js 오류가 발생합니까? – jackJoe

답변

2

OK! 나는 그 문제를 발견했다.

IE는이 코드 세그먼트를 좋아하지 않았다

for (var i in data[0].groups) { 
     if (data[0].groups[i].name.indexOf("LEAP") != -1) { 
      AssignPoints.Limit = data[0].groups[i].name.substr(5,3); 
     } 
    } 

내가 변경 한 때이 형식 : FF와 IE에서 의도 한대로 작동

 for (var i = 0; i < data[0].groups.length; i++) { 
      if (data[0].groups[i].name.substr(0,4) == "LEAP") { 
       AssignPoints.Limit = data[0].groups[i].name.substr(5,3); 
      } 
     } 

.

+0

좋은 하나! 축하해. – jackJoe

관련 문제