0

使用 JavaScript 获取图像的真实宽度和高度?(在 Safari/Chrome 中),一个声称的聪明的解决方案是关于如何计算图像的实际大小。

var t = new Image();
t.src = (img_element.getAttribute ? img_element.getAttribute("src") : false) || img_element.src;

我试图弄清楚第二行的作用。我知道我想使用的来源,因此简单地声明了它。这不会产生任何其他属性,例如 t.width。

4

4 回答 4

1

如同

if(foo){ 
    if(bar) {
         bar;
    }
    else {
        xyz;
    }
else {
    if(fobar) {
          fobar;
    }
    else {
        xyz;
    }
}

在您的现实生活中,因为fobar是错误的

if(foo){ 
    if(bar) {
         bar;
    }
    else {
        xyz;
    }
else {
    xyz;
}

所以

if(foo && bar) {
    bar;
}
else {
    xyz;
}
于 2013-05-16T14:56:34.847 回答
1

首先,我们检查哪里有 getAttribute 之类的东西,属于 img_element 的一些字段/方法。实际上,这个检查严格判断是不够的,因为 getAttribute 实际上可以是任何东西,而且,当我们检查它是否等于 true 时,我们试图调用 getAttribute 就好像它是一个函数,这不能保证我们的支票。

但是我们假设如果某个对象有 getAttribute,它是一个 DOM 函数,而不是别的东西。在 javascript 中,这样的假设很常见。

所以,我们首先检查img_element是否有getAttribute,如果有,我们检查“src”属性。这是一个真实的字符串,然后我们就完成了。如果没有,我们将通过直接检查 .src 来进行最后一次尝试。

您提供的片段实际上是关于我们应该首先检查属性然后 - 直接检查字段。

于 2013-05-16T15:05:00.327 回答
0

它将测试是否img_element.getAttribute ? img_element.getAttribute("src") : false)等于其他东西false

如果测试等于 false,则测试是否img_element.src不同 false,否则返回 false

于 2013-05-16T14:56:55.610 回答
0
var x = false,
    y = x || true;

在这种情况下,y将是真的,它是一个OR运算符,它检查第一个第二个(按此顺序)是否为true; 如果两者都是false,则返回 false。否则,返回第一个元素true.

于 2013-05-16T14:57:12.393 回答