当我将窗口最大化或切换到窗口模式时,$(window).resize()事件在Chrome中无法正常工作。

11
以下函数包含一个“resize”事件,当我通过鼠标拖动边框调整窗口大小时,它可以正常工作,但当我最大化浏览器或恢复窗口时,脚本无法正常工作。在其他浏览器中可以正常工作。可能的原因是什么?
(function ( $ ) {
    jQuery.fn.font_resizer = function () {
        var self = jQuery(this);
        var fontSize = self.css('fontSize').slice(0, -2);
        var lineH = self.css('lineHeight').slice(0, -2);
        jQuery(self).resize_font(self, fontSize, lineH);

        jQuery(window).on('resize', function() {
           jQuery(self).resize_font(self, fontSize, lineH);
        });
    };
    } (jQuery));

方法resize_font的声明在哪里? - Prog Mania
这两个方法都在主作用域中声明(也不在“$ .ready”之内)。 - Anarcociclista
1个回答

2

这对我在Chrome版本42.0.2311.90 m上有效。

jQuery(window).on('resize', function() {...} 在窗口最大化以及调整窗口边框时起作用。它不适用于窗口最小化/还原,因为大小不会改变,所以这不会影响您。

JSFiddle: https://jsfiddle.net/seadonk/jafdoex8/

我没有看到您的font_resize事件的声明,因此我自己创建了一个,根据窗口的宽度和高度设置字体大小和行高。

(function ($) {
    jQuery.fn.font_resizer = function () {
        var self = $(this);
        var fontSize = self.css('fontSize').slice(0, -2);
        var lineH = self.css('lineHeight').slice(0, -2);
        jQuery(self).resize_font(fontSize, lineH);
        jQuery(window).on('resize', function () {
            jQuery(self).resize_font(fontSize, lineH);
        });
    };

    //on window resize set the font and line height
    jQuery.fn.resize_font = function (fontSize, lineH) {        
        var self = $(this);
        self.css('fontSize',$(window).width()/1920*36+'pt');
        self.css('line-Height',$(window).height()/1080*36+'px');
        $('#fontSize').text(self.css('fontSize').slice(0, -2));
        $('#lineHeight').text(self.css('lineHeight').slice(0, -2));
        $('#fontTimeStamp').text(getTime());
    };
}(jQuery));

(function () {
    $("body").font_resizer();
});

对我有用...但是为什么JQuery(window)和$(window)不同呢? - mazen el zoor
JQuery或$都可以,除非您有另一个定义$的库。 - Brino
谷歌浏览器修复了这个 bug 吗? - Anarcociclista

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接