2009-08-21 1 views
0

웹 사이트에서 jQuery를 통해 이미지 교차 페이드 방법을 사용하고 있습니다. 기밀상의 이유로, 나는 (this reference 기준) 크로스 페이더의 자바 스크립트를 사이트의 전체 코드를 게시하지만 여기 수 없습니다JQuery 문제 : 스크립트 (간혹)가 작동하지 않습니다 (일부 버전) IE7

 <script type="text/javascript"> 
     $(function() { 
      if ($.browser.msie && $.browser.version < 7) return;   
      $('#nav li')  
      .removeClass('highlight').find('a').append('<span class="hover" />').each(function() { 
       var $span = $('> span.hover', this).css('opacity', 0); 
       $(this).hover(function() { 
       $span.stop().fadeTo(250, 1); 
       }, function() { 
       $span.stop().fadeTo(250, 0); 
       }); 
      }); 
     }); 
    </script> 

그것은 모든 브라우저에서 거침없이 작동합니다 -에 IE7 설치를 포함하여 내 PC를 테스트하십시오. 그러나 IE7이 설치된 다른 PC에서는 때로는의 효과가 나타나지 않습니다. 이미지가로드되지만 그 위에 마우스를 올리면 아무 효과가 없습니다. 이것은 JS가 완전히 실패하지 않았 음을 의미합니다.이 경우 롤오버는 여전히 효과가있을뿐 아니라 페이딩없이 작동합니다. 대신 IE7이 "하이라이트"클래스를 제거하지만 멈추는 것 같습니다.

정말 기괴한 부분입니까? 실패는 100 % 무작위입니다. 창을 새로 고치면 때로는 효과가 잘 작동합니다. 어떻게 이럴 수있어?

업데이트 : 나는이 문제가 웹 사이트에 영향을 미치는 AJAX 스크립팅 어딘가에 있다고 판단했다. 모든 AJAX를 제거하고 정적 컨텐츠로 교체하면 오류가 제거됩니다. 내 이론은 페이지가로드 될 때 AJAX 콘텐츠가 이미지로드 전에 완료된다는 것입니다. 이것은 IE7 freak를 만들어 내고 crossfade 효과를 포기합니다. 이 문제가 맞다면 문제는 어떻게 해결할 수 있습니까?

업데이트 2 : 나는 호버 위해 사용하고 메인 이미지의 로딩이 중단됩니다 : 피들러를 사용하여 토끼 구멍 아래로 더 나아가, 나는 IE7에서 효과의 각 성공적인 부하에 대한 일관된 일을 통지 , 다시로드하십시오. 효과가 성공적이지 않은 경우에는 발생하지 않습니다. 달리 말하면 브라우저가 간단한 jQuery 프리 로더 함수를 사용하여 이미지를 프리로드하도록 강제하면 현재의 산발적으로 작동하는 상태가 아닌 매번 IE7에서 교차 효과가 깨집니다.

이것은 내가 이해하기에는 너무 기괴하지만, 어떤 아이디어라도 확실히 환영합니다.

+1

일부 리소스 파일이 안정적으로 다운로드되지 않을 수 있습니까 (다른 스크립트, 이미지, CSS 등)? –

+0

마이클이 뭔가있을 거라 생각합니다. Fiddler 또는 다른 트래픽 모니터를 잡고 모든 파일이 제대로 전달되는지 확인하십시오. – Travis

+0

좋은 생각들, 얘들 아,하지만 Fiddler는 모든 것이 정상적으로 진행되고 있음을 확인합니다. – Josh

답변

0

준비 기능을 호출하기 전에 CSS가 포함되어 있습니까?

참고 : the docs에서 모든 스타일 시트 스크립트 (준비 함수를 호출하는 특히) 전에 포함되어 있는지 확인하십시오. 이렇게하면 jQuery 코드가 실행되기 전에 모든 요소 속성이 올바르게 정의되었는지 확인할 수 있습니다. 이렇게하지 않으면 사파리와 같은 WebKit 기반 브라우저에서 산발적 인 문제가 발생할 수 있습니다.

저는 IE가 WebKit 기반이 아니라는 것을 알고 있지만 확인해 볼 가치가 있습니다.

+0

예, 스크립트 앞에 모든 CSS가로드되고 있습니다. 좋은 시도. 이 시점에서 나는 안타깝게도 IE7에 대한 효과를 완전히 비활성화하는 것을 고려하고 있습니다. – Josh