1

レスポンシブメニューには次のスクリプトを使用しています。IE7では、スクリプトによってページがフリーズし、「スクリプトが長時間実行されているため、ページが応答していません」と表示されます。フリーズの原因となっているビットwindow.bindはコードの下部にある部分であることがわかりました。これまでの調査から、IE7で無限ループが発生していることがわかりました。setTimeoutなどの使用に関する回答を読みましたが、私は非常に初心者であり、これをスクリプトに実装する方法がわかりません。このスクリプトがIE7をクラッシュ/フリーズするのを防ぐ方法はありますか?

これがこのブログ投稿のタイムアウトを含む解決策ですが、以下のスクリプトでそれを実装する方法がわかりません

/* Sample scripts for RWD nav patterns 
(c) 2012 Maggie Wachs, Filament Group, Inc - http://filamentgroup.com/examples/rwd-nav-   patterns/GPL-LICENSE.txt
Last updated: March 2012
Dependencies: jQuery
 */



jQuery(function($){

$('.nav-primary')
  // test the menu to see if all items fit horizontally
  .bind('testfit', function(){
        var nav = $(this),
            items = nav.find('a');

        $('body').removeClass('nav-menu');                    

        // when the nav wraps under the logo, or when options are stacked, display the nav as a menu              
        if ( (nav.offset().top > nav.prev().offset().top) || ($(items[items.length-1]).offset().top > $(items[0]).offset().top) ) {

           // add a class for scoping menu styles
           $('body').addClass('nav-menu');

        };                    
     })

  // toggle the menu items' visiblity
  .find('h3')
     .bind('click focus', function(){
        $(this).parent().toggleClass('expanded')
     });   

// ...and update the nav on window events
$(window).bind('load resize orientationchange', function(){
   $('.nav-primary').trigger('testfit');
});

});
4

1 に答える 1

2

John Resig によるこの記事をチェックしたいと思いますhttp://ejohn.org/blog/learning-from-twitter/

基本的に、関数をイベントに直接バインドするのではなく、関数を 250 ミリ秒ごとに実行することを彼は提案しています。

var outerPane = $details.find(".details-pane-outer"),
    didScroll = false;
$(window).scroll(function() {
    didScroll = true;
});

setInterval(function() {
    if ( didScroll ) {
        didScroll = false;
        // Check your page position and then
        // Load in more results
    }
}, 250);

ブラウザーが多くのイベントを同時に発生させると、はるかに効率的になります。ページの開始時にサイズ変更イベントが 20 回実行されることはありません。

于 2012-05-26T01:15:25.203 に答える