safari中的$(window).resize():如果滚动窗口(但没有调整大小)也可以使用它?

时间:2015-04-29 10:13:17

标签: javascript jquery html cross-browser mobile-safari

我注意到,我的iphone5上有safari

$(window).resize()

奇怪的是......

我有这段代码:

$(document).ready(function () {
 $(window).resize(function() {
     avviaChart();
     initialize();
     if($('#time').is(':checked')){ 
         $("#time").removeAttr('checked');
         $("#Time").css('border','2px solid #ffffff');
     }  
  });   
});

此代码仅在窗口大小改变时才有效.... 与其他浏览器工作非常好,但如果我滚动页面(并且窗口的大小没有改变),使用safari代码也可以工作...

可能性如何? O.o

3 个答案:

答案 0 :(得分:17)

这是iOS6 Safari中发生的已知错误。滚动时,resize事件会随机触发。幸运的是it's not a jQuery issue.

This answer类似的问题也可以解决您的问题。

懒惰:

3Stripe发布了"存储窗口宽度并检查它是否已实际更改,然后继续使用$(窗口).resize函数"

他的代码片段:

jQuery(document).ready(function($) {

    /* Store the window width */
    var windowWidth = $(window).width();

    /* Resize Event */
    $(window).resize(function(){
        // Check if the window width has actually changed and it's not just iOS triggering a resize event on scroll
        if ($(window).width() != windowWidth) {

            // Update the window width for next time
            windowWidth = $(window).width();

            // Do stuff here

        }

        // Otherwise do nothing

    });

});

答案 1 :(得分:6)

如您所见,在iphone / ipad和Android设备中,当您向下滚动页面时,地址栏会很小,当滚动到顶部地址栏大小将返回实际大小时,此操作将触发window.resize事件

答案 2 :(得分:0)

特定于ios的这个问题,如果任何改变窗口中任何内容大小的处理程序,将触发resize事件,有时它会卡在<div class="uk-home-button"> <div> <div class="uk-panel-box"></div> </div> <div> <div class="uk-panel-box"></div> </div> <div> <div class="uk-panel-box"></div> </div> <div> <div class="uk-panel-box"></div> </div> </div>中。因此,如上所述,如果两者相等则返回时,有一个条件将infinite resize callprevious width进行比较。