无法在 Chrome 中获取对象的真实高度/宽度

发布于 2024-08-26 05:55:35 字数 663 浏览 4 评论 0原文

我有一个问题,如果我在 css 中设置图像高度并尝试获取高度/宽度,我会在不同的浏览器中得到不同的结果。有没有办法在所有浏览器中获得相同的尺寸?

找到一个实例

您可以在此处<-已删除并 这个概念是这样的:

CSS:
img{
  height:100px;
  }

Script:
$(document).ready(function(){
    $("#text").append($("#img_0").attr("height"));
    $("#text").append($("#img_0").attr("width"));
});

输出 Firefox: 图片高度:100 img 宽度:150

输出 Chrome: 图片高度:100 img 宽度:0

输出 Chrome: 图片高度:100 图片宽度:93?

我已经从 StackOverflow 尝试过这个: stackoverflow.com/questions/1873419/jquery-get-height-width

但仍然得到相同的结果

有人知道一个好的解决方案吗?

I have a question, if i set a image height in css and try to get height/width i get different results in different browsers. Is there a way to get the same dimension in all browsers?

You can find a live examplehere<-Removed

and the concept is like this:

CSS:
img{
  height:100px;
  }

Script:
$(document).ready(function(){
    $("#text").append($("#img_0").attr("height"));
    $("#text").append($("#img_0").attr("width"));
});

Output Firefox:
img height: 100
img width: 150

Output Chrome:
img height: 100
img width: 0

Output Chrome:
img height: 100
img width: 93?

i have tried this from StackOverflow:
stackoverflow.com/questions/1873419/jquery-get-height-width

but still get the same result

Any one know a good solution?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(4

凹づ凸ル 2024-09-02 05:55:35

图像未在 document.ready 中加载,您需要使用 window.load 事件来确保它们存在,如下所示:

$(window).load(function(){
    $("#text").append($("#img_0").height());
    $("#text").append($("#img_0").width());
});

这里快速了解差异 ,重要的部分是图片加载。

The images aren't loaded in document.ready, you need to use the window.load event to make sure they're present, like this:

$(window).load(function(){
    $("#text").append($("#img_0").height());
    $("#text").append($("#img_0").width());
});

Here's a quick read on the difference, the important part is that pictures are loaded.

笑脸一如从前 2024-09-02 05:55:35

Nick Craver 使用 $(window).load() 的答案是正确的,但图像也有一个 load() 方法,它允许更细的粒度,特别是如果可能有多个图像需要加载。

  $(document).ready(function(){ 
    $("#top_img_0").load (function (){
      $("#text").append( "height: " + $("#top_img_0").attr("height")+"<br/>" );
      $("#text").append( "width: " + $("#top_img_0").attr("width")+"<br/>" );   
      }); 
  });

Nick Craver's answer to use $(window).load() is correct, but the images also have a load() method, which allows finer granularity, especially if there are perhaps multiple images to load.

  $(document).ready(function(){ 
    $("#top_img_0").load (function (){
      $("#text").append( "height: " + $("#top_img_0").attr("height")+"<br/>" );
      $("#text").append( "width: " + $("#top_img_0").attr("width")+"<br/>" );   
      }); 
  });
泡沫很甜 2024-09-02 05:55:35

看起来这是一个竞争条件,至少对我使用 Chrome 来说是这样。当您获取尺寸时,图像尚未完成加载。我将所有内容设置为在 200 毫秒超时后触发,并显示实际宽度/高度。

    $(document).ready(function() {
        setTimeout("getImageDimensions()", 200);
    });

    function getImageDimensions() {
        var pic_real_width;
        var pic_real_height;

        $("#topContent img").each(function() {
            var $this = $(this);
            $this.removeAttr("width");
            $this.removeAttr("height");
            $this.css({ width: 'auto', height: 'auto' });

            pic_real_width = $this.width();
            pic_real_height = $this.height();
            $this.css({ width: '', height: '100px' });
        });

        $("#text").append(" height: " + pic_real_height/*$("#top_img_0").attr("height")*/ + "<br/>");
        $("#text").append(" width: " + pic_real_width/*$("#top_img_0").attr("width")*/ + "<br/>");
    }

已在 Chrome、IE 和 Firefox 中测试并运行。全部显示 2008 x 3008。

It looks like it is a race condition, at least it was for me using Chrome. The image isn't finished loading at the time you are getting the dimensions. I set everything to fire after a 200ms timeout and the real width/height are displayed.

    $(document).ready(function() {
        setTimeout("getImageDimensions()", 200);
    });

    function getImageDimensions() {
        var pic_real_width;
        var pic_real_height;

        $("#topContent img").each(function() {
            var $this = $(this);
            $this.removeAttr("width");
            $this.removeAttr("height");
            $this.css({ width: 'auto', height: 'auto' });

            pic_real_width = $this.width();
            pic_real_height = $this.height();
            $this.css({ width: '', height: '100px' });
        });

        $("#text").append(" height: " + pic_real_height/*$("#top_img_0").attr("height")*/ + "<br/>");
        $("#text").append(" width: " + pic_real_width/*$("#top_img_0").attr("width")*/ + "<br/>");
    }

Tested and works in Chrome, IE and Firefox. All display 2008 x 3008.

分開簡單 2024-09-02 05:55:35

替换

$this.css({width: '', height: ''}); 

$this.css({width: 'auto', height: 'auto'});

Opera 10.10 高度/宽度 2008 x 3008

Replace

$this.css({width: '', height: ''}); 

with

$this.css({width: 'auto', height: 'auto'});

Opera 10.10 height/width 2008 x 3008

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文