レスポンシブメニューには次のスクリプトを使用しています。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');
});
});