2009-08-21 11 views
0

(の一部のバージョンが)私はウェブサイト上のjQueryを介して画像クロスフェード法を使用しています失敗します。機密性の理由から、私は、サイトの全体のコードを投稿することはできませんが、ここではjavascript(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> 

それはすべてのブラウザでswimmingly作品 - IE7は私にインストールを含みますPCをテストします。しかし、IE7を搭載した他のPCでは、の場合はというエラーが発生します。画像はロードされますが、その上にマウスを置くと効果はありません。これは、JSが完全に失敗していないことを意味します。その場合、ロールオーバーはまだ機能しません。フェーディングはありません。代わりに、IE7が "ハイライト"クラスを削除しているようですが、停止しているようです。

本当に奇妙な部分ですか?失敗は100%ランダムです。ウィンドウをリフレッシュすると、効果がうまくいくことがあります。どうすればいいの?

UPDATE:私は、この問題は、AJAXスクリプティングがウェブサイトに役立っているどこかにあると判断しました。すべてのAJAXを削除して静的コンテンツに置き換えると、エラーが解消されます。私の理論は、ページが読み込まれるときにAJAXコンテンツがイメージロードの前に完了することがあるということです。これにより、IE7はフリークアウトし、クロスフェード効果をあきらめます。これが問題であることが間違っている場合は、どうすれば修正できますか?

UPDATE 2:はフィドラーを使用して、ウサギの穴のさらに下に行く、私はIE7での効果の各成功した負荷に対して1つの一貫性のあるものに気づく:私はホバーのために使用している主画像の読み込みが中止され、再度ロードされます。効果がうまくいかないときは、これは起こりません。別の言い方をすれば、単純なjQueryプリローダ関数を使用してブラウザに画像をプリロードさせると、現在の散発的な動作状態ではなく、IE7のクロス効果が毎回破棄されます。

これは私も理解するのはあまりにも奇妙ですが、任意のアイデアは確かに歓迎されています。

+1

一部のリソースファイルが確実にダウンロードされない可能性がありますか(他のスクリプト、イメージ、CSSなど) –

+0

私はマイケルが何かにいるかもしれないと思います。 Fiddlerやその他のトラフィックモニタをつかみ、すべてのファイルが確実に通過していることを確認してください。 – Travis

+0

いい考えがありますが、Fiddlerはすべてが大丈夫かどうかを確認しています。 – Josh

答えて

0

レディ機能を呼び出す前にCSSが含まれていますか?

注:the docsからすべてのスタイルシートは、スクリプト(レディ機能を呼び出すこと特に)の前に含まれていることを確認してください。これにより、jQueryコードの実行が開始される前に、すべての要素のプロパティが正しく定義されていることが確認されます。これを行わないと、特にWebKitベースのSafariなどのブラウザで散発的な問題が発生します。

私はIEがWebKitベースではないと理解していますが、チェックする価値があります。

+0

はい、スクリプトの前にすべてのCSSがロードされています。良いと思う。 残念ながら、IE7の効果を完全に無効にすることを検討しています。 – Josh