0

我使用这段代码在最新版本的 Chrome、FX 和 Safari 下进行了测试。如果我按下最大化按钮,它会在 FX 和 Chrome 中触发两次,但在 Safari 中只会触发一次。我使用的是 Windows 7。令人惊讶的是,如果我使用 Windows XP,Chrome 会触发两次,而 FX、Safari 会触发一次。是否可以保证它会触发两次?谢谢

$(window).resize(function() {

    if (!isiPhone()) {
        if ($(".viewportBinder").length){                   
            $("#view").css('height',$(window).height());
            $("#view").css('width',$(window).width());  
            content = element.viewport('update'); 
        }

        var h = screen.height;
        var w = screen.width;

        $(window).css("height",h);
        $(window).css("width",w);

        Book.book_position();
        Book.zoom_auto();

        /*
        var is_firefox = navigator.userAgent.indexOf('Firefox') > -1;
        var is_safari = navigator.userAgent.indexOf("Safari") > -1;

        if ((is_firefox)||(is_safari))*/
        alert ('test');
    }   

});
4

3 回答 3

1

这不是问题。它依赖于浏览器。您将需要处理这种情况。

如果参数相同,记住你的最后一个动作并忽略它怎么样。

您可以编写如下代码:

function myResizer() {
    if (!isiPhone()) {
        if ($(".viewportBinder").length) {                   
            var height, width;
            height = $(window).height();
            width = $(window).width();
            if ((myResizer.height !== height) || (myResizer.width !== width)) {
                $("#view").css('height',$(window).height());
                $("#view").css('width',$(window).width());  
                content = element.viewport('update'); 
                myResizer.height = height;
                myResizer.width = width;
            }
        }

        var h = screen.height;
        var w = screen.width;

        if ((myResizer.h !== h) || (myResizer.w !== w)) {
            $(window).css("height",h);
            $(window).css("width",w);

            Book.book_position();
            Book.zoom_auto();
            myResizer.h = h;
            myResizer.w = w;
        }
    }   
}

$(window).resize(myResizer);
于 2012-12-17T15:03:32.450 回答
1

resize 事件不会触发,如果您调整浏览器的大小......它会触发多次,可能针对每个像素,不知道。这取决于浏览器...

另请参阅:javascript resize event triggering multiple times while draging the resize handle

于 2012-12-17T15:04:32.880 回答
1

我想,这不是什么大问题。我解决了这个问题,通常使用调整大小完成时触发的方法。

var after_resize = (function(){
var timer = 0;
return function(callback, ms){
    clearTimeout (timer);
    timer = setTimeout(callback, ms);
};
})();
$(window).resize(function() {
after_resize(function(){
    alert("resize finish!");
}, 300);
});
于 2012-12-17T16:00:58.183 回答