2016-03-29 9 views
0

Magentoウェブサイトには、メニュー内の親li要素の上にマウスが移動したときに表示されるメガメニューがあります。メガメニュー用JavaScript

ただし、ページが読み込まれるとすぐにメニューに移動すると、メガメニューが正しく表示されません。

ユーザーのインターネット接続が不十分な場合はさらに悪化します。

クロムインスペクタを確認した後、これは、overクラスがliに追加されていないためです。 1,2秒待ってからの親に戻ってliの要素を入力すると、overクラスが追加され、メガメニューのdisplay cssプロパティがblockに変更されます。

overクラスを追加したjavascriptが見つかりました。これは、script.jsを使用しているテーマの一部です。

// CODE OMMITED FOR BREVITY 
jQuery(window).load(function() { 

    // CODE OMMITED FOR BREVITY 

    if(jQuery('#nav-wide').length){ 
     jQuery('#nav-wide li.level-top').mouseenter(function(){ 
      jQuery(this).addClass('over'); 
      if(mobileDevice == true){ 
       document.addEventListener('touchstart', wideMenuListener, false); 
      } 
     }); 
     jQuery('#nav-wide li.level-top').mouseleave(function(){ 
      jQuery(this).removeClass('over'); 
     }); 

     // CODE OMMITED FOR BREVITY 
    } 

    // CODE OMMITED FOR BREVITY 

}); 

なぜこのjavascriptを読み込むのに時間がかかりますか?または私はそれを改善する方法は?

+0

に内テーマのmouseoverイベントリスナーを動かします。 jsが完全に読み込まれた後に非表示にします。 –

+0

私は@ Ji_in_codingに同意します---あなたが深刻なコードやサーバーの最適化をしない限り、ほとんどのMagentoストアはゆっくりと読み込みます。ベストベットは、サイトが完全に読み込まれるまで「読み込み中」のオーバーレイです。 - Magentoがゆっくりと読み込む "理由"は数多くあります。私はそれがゆっくりと読み込まれているJSだけではなく、むしろサーバーがMagentoが置いた巨大なドローでゆっくりと応答していると言うことを念頭に置いています。 – Zak

答えて

1

私はこれを考え出したと思います。

テーマは、jQuery(window).load(function(){});の中に、ページ上のすべてがロードされたとき、つまりすべての画像オブジェクトがロードされたときに読み込まれる&フレームがロードされているクラスを追加しています。そして、私たちはほとんどのページでFacebookのウィジェット(フレーム)を使用しています。

jQuery(document).ready(function(){});の機能は、HTMLドキュメントが準備完了のときに読み込まれます。これは、私たちの場合には、ずっと早くなります。

だから私は単にあなたは間違いなくロードGIFを示して半透明のスクリーンオーバーレイに置くことができる...それがロードするので、時間がかかり、なぜあなたの答えずjQuery(document).ready()機能

+0

良い発見、それはダニに値すると思います –

関連する問題