1

ブラウザー ウィンドウのサイズが変更されたときに、要素のサイズを変更し、ページで開いているすべてのポップアップを閉じる jquery を作成しました。

    addEvent({
        target: window,
        eventListener: 'onresize',
        func: function (e) {
            resizeElements(); //This resizes loads of stuff
            closeAllPopups(); //Closes any open popups
        }
    });

これは 100% ズームで問題なく動作します。ただし、90% 未満のズーム レベルでは、ウィンドウのサイズが変更されていない場合でも、onresize が呼び出され続けます。その結果、ポップアップは開かず、すぐに閉じます。

これはIE8でのみ発生するようです。Chromeでは問題なく動作します。

なぜこれが起こっているのか考えてみてください - それは単に IE8 のバグですか? 誰でも修正または回避策を提案できますか?

4

3 に答える 3

1

ウィンドウの元のサイズとサイズ変更のサイズを確認してから、関数を呼び出してみてはどうでしょうか?

したがって、読み込み時に 90% のビューにいる場合でも、このウィンドウ サイズは元のサイズになり、サイズを変更したとき (90% のビュー未満) にのみ、関数が呼び出されますか?

$(document).ready(function(){
    var original_width = $(window).width();
    var original_height = $(window).height();

    $(window).resize(function() {
        var resize_width = $(window).width();
        var resize_height = $(window).height();

        if(original_width != resize_width && original_height != resize_height){
            alert('You resized!');
            // resizeElements(); //This resizes loads of stuff
            // closeAllPopups(); //Closes any open popups
        }
    });
}); 
于 2013-06-12T04:16:26.357 に答える
0

タイマーを使用してデバウンスを試みることができます。

addEvent({
        target: window,
        eventListener: 'onresize',
        func: function (e) {
            clearTimeout(window.resizeTimeout);
            window.resizeTimeout = setTimeout(function(){
                resizeElements(); //This resizes loads of stuff
                closeAllPopups(); //Closes any open popups
            },50);
        }
    });

ここではグローバル オブジェクト ウィンドウを使用して resizeTimeout 変数を設定していますが、ローカル変数を使用することをお勧めします。

于 2013-05-29T10:15:20.837 に答える