如何判断是否已使用Javascript(jQuery)为图像指定了特定的宽度/高度?
可能重复:如何判断是否已使用Javascript(jQuery)为图像指定了特定的宽度/高度?,javascript,jquery,image,dimensions,Javascript,Jquery,Image,Dimensions,可能重复: 通常,我们可以使用$('img').width()或$('img').css('width')获得图像宽度,当指定宽度时,如下所示 <img src="image.gif" width="32" height="32" /> <img src="image.gif" style="width: 32px; height: 32px" /> 但如果我们不指定宽度: <img src="image.gif" /> IE将返回28px,FF
通常,我们可以使用
$('img').width()
或$('img').css('width')
获得图像宽度,当指定宽度时,如下所示
<img src="image.gif" width="32" height="32" />
<img src="image.gif" style="width: 32px; height: 32px" />
但如果我们不指定宽度:
<img src="image.gif" />
IE将返回28px,FF将返回0px
问题是,我们可能有意将图像宽度设置为28px或0px,这将导致与实际未设置宽度的情况相同的数字
我的问题是:我们如何判断一幅图像是否有特定的宽度/高度
编辑
抱歉,各位,忘记了一件重要的事情:IE上的28px和FF上的0px只有在找不到图像时才会发生(404)检查
.attr('width')
/.attr('height')
图像在浏览器中异步加载,因此这取决于检查尺寸的位置。我想您看到的是,当您查询宽度或高度时,图像尚未加载
如果运行此命令,您可能会看到初始警报()报告为0,但如果单击按钮,则会显示实际大小:
<img id="Image" src="images/MessageBoardLogo.png" />
<input type="button" id="Button" value="Caption" />
<script type="text/javascript">
$().ready( function() {
imageSize();
$("#Button").click(imageSize);
});
function imageSize()
{
alert($("#Image").width());
}
</script>
这是一种黑客行为,但您可以通过以下方式获得原始HTML:
var htmltag=$("img")[0].outerHTML;
然后将其解析为width=“…”
或style=“…”
:
有边界宽度为
border width
的边界情况,等等,但是你明白了。更大的问题是通过类的宽度:使用.wide{width:32px;}
IE使用.width()
还是使用.css('width')
返回28px?这是一个重复的问题。看到或@qodeninja-nah…完全不同。我正在寻找一种方法来检查是否给定了维度,而不是维度值。@user1643156-这是一样的。如果没有值,那么维度就没有设置。如果宽度是使用CSS显式设置的呢?我相信这只会检查是否指定了宽度/高度属性。@ahren那么你可以检查.CSS('width')
,甚至可以查看.attr('style')
。如果你不在乎它是用高度/宽度属性还是CSS声明设置的,如果需要计算图像的实际宽度和高度,可以使用.height()
或.width()
,那么.width()和.height()是更好的选择,因为它首先查找实际图像大小,然后在实际图像宽度不可用时检查属性。在.width()和.height()上使用.attr('width')/.attr('height')不应该有任何理由。感谢Wolfgang,但是在外部css文件中设置的样式无法通过您的方法检测到。(是的,我没有提到外部css)
var htmltag=$("img")[0].outerHTML;
if (
htmltag.match(/style=['"][^'"]*width:/) ||
htmltag.match(/width=['"]/)
) alert("Has width");