页面加载期间IE中没有图像的高度和宽度

Posted

技术标签:

【中文标题】页面加载期间IE中没有图像的高度和宽度【英文标题】:No height and width of images in IE during page load 【发布时间】:2012-05-24 18:40:39 【问题描述】:
jQuery(window).load(function() 
    jQuery.each(jQuery(".extraimgs"), function() 
        //this.height = 0 and this.width=0 in IE only
        if (this.height > this.width) 
            if (this.height > 263) 
                this.height = 263;
            
            if (this.width > 354) 
                this.width = 354;
            
        
        else 
            this.height = 263;
            this.width = 354;
        
    );
);

html 代码

<asp:DataList runat="server" ID="dlImages" RepeatColumns="2" RepeatDirection="Horizontal" RepeatLayout="Table" OnItemDataBound="dlImages_ItemDataBound" Style="display: none;">
    <ItemTemplate>
        <div>
            <asp:Image runat="server" ID="imgPics" class="extraimgs" />
        </div>
    </ItemTemplate>                                 
</asp:DataList>

我在 IE 中遇到此代码的问题。在这里,我在运行时设置图像的高度和宽度(页面加载事件 - 使用 jQuery)和使用代码隐藏的图像源。

此代码在除 IE8 之外的所有浏览器中运行良好。在页面加载事件中,我得到了图像的高度和宽度,但在 IE8 中我没有得到图像的高度和宽度。在加载事件期间,我尝试了很多方法来获取图像的高度和宽度,但它不起作用。

有人知道解决办法吗?

【问题讨论】:

你试过$(this).height()$(this).width()吗?应该可以的。 是的..我试过了。但它不起作用。我得到 0(零)作为高度和宽度 有一个 jsfiddle 来玩这个会很好。您也可以尝试改用jQuery(".extraimgs").load(function() /* ... */),因为可能在执行代码时图像尚未加载。 我会阅读 this 和 this 这应该可以,jsfiddle链接会很好玩。 【参考方案1】:

$(document).load()$(document).ready() 而不是 $(window).load() 呢?

【讨论】:

确实,我没有注意到 OP 使用的是.load()【参考方案2】:

试试这个:

jQuery(document.body).load(function () 
      jQuery(".extraimgs").each(function (i) 
        if (this.height > this.width) 
            if (this.height > 263) 
                this.height = 263;
            
            if (this.width > 354) 
                this.width = 354;
            
        
        else 
            this.height = 263;
            this.width = 354;
        
      );
    );

【讨论】:

它不工作..这里我没有使用这个得到高度和宽度【参考方案3】:

好的,根据我上面的评论,这是一个应该可以工作的版本:

jQuery(function() 
    jQuery(".extraimgs").load(function() 
        var $this = $(this);
        if ($this.height > $this.width) 
            if ($this.height > 263) 
                $this.height = 263;
            
            if ($this.width > 354) 
                $this.width = 354;
            
        
        else 
            $this.height = 263;
            $this.width = 354;
        
    );
);

【讨论】:

以上是关于页面加载期间IE中没有图像的高度和宽度的主要内容,如果未能解决你的问题,请参考以下文章

如何确定 IE 中动态加载图像的 img 宽度/高度?

在 IE 上获取图像加载时的图像宽度失败

根据 img 标签中给出的高度宽度自动裁剪图像

在第一次加载或使用ctrl + f5重新加载时在firefox上的画布上绘制图像不起作用

如何在页面加载时将 Kendo 网格高度设置为固定值

包含 Vue.js 后,图像宽度和高度始终为 0 [关闭]