【发布时间】:2014-04-21 23:53:55
【问题描述】:
我正在尝试检测 javascript 中的图像,我认为这是可行的,但事实并非如此。我怎样才能正确地做到这一点?
if (url.substr(url.length - 3 ) == 'gif' || 'jpg' || 'png')
【问题讨论】:
-
是什么让你相信这会奏效?
标签: javascript
我正在尝试检测 javascript 中的图像,我认为这是可行的,但事实并非如此。我怎样才能正确地做到这一点?
if (url.substr(url.length - 3 ) == 'gif' || 'jpg' || 'png')
【问题讨论】:
标签: javascript
您不能以这种方式使用||。您必须将 if 语句重写为:
var lastThree = url.substr(url.length - 3);
if(lastThree == 'gif' ||
lastThree == 'jpg' ||
lastThree == 'png')
{
// do something
}
或者你可以使用一个数组(我个人更喜欢):
if(['gif','jpg','png'].indexOf(url.substr(url.length - 3)) > -1)
{
// do something
}
您还应该对 URL 子字符串使用 toLowerCase() 方法,因为某些图像文件可能以 JPG 或 GIF 结尾。
【讨论】:
您似乎误解了 OR 的作用:
var ext = url.substr(url.length - 3 );
if (ext == 'gif' || ext == 'jpg' || ext == 'png') {
..
}
【讨论】:
你可以使用正则表达式:
if (/gif|jpg|png/i.test(url.substr(url.length - 3 )))
注意jpg也可以是jpeg,gif可能是giff还有 tiff 等格式。并且扩展名不可靠,无法确定文件格式。
正如 Cookie Monster 所建议的,您可以使用以下命令节省一些输入:
/(gif|jpg|png)$/i.test(url)
并根据需要添加额外内容:
/(gif|jpg|jpeg|jfif|png|tiff|raw|bmp|svg)$/i.test(url)
【讨论】:
substr?
||之后需要提供完整的条件
var src = url.substr(url.length - 3 );
if (src === 'gif' || src === 'jpg' || src === 'png')
=== 用于检查值和类型。
【讨论】: