2014-02-27 36 views
0

我不知道这是否可能,但有没有办法在JavaScript和PNG之间解码JPG和PNG?我假设没有,但如果我能以不同的方式获得帮助,请按照我所做的来做。Javascript能否确定PNG或JPG?

如果它是JPG或PNG,我需要设置图像。现在我正在为我的构建字符串添加一个扩展,因为我只从我的代码中获得一个int。

我想知道我是否可以告诉它使用if/else语句添加扩展。
就像使用'.jpg'或'.png'这样的一种方式不存在,另一个可以使用。

if (JPG) { 
     img.attr('src', samplePath + 'pages/' + page + '.jpg'); 
    } 
    else { 
     img.attr('src', samplePath + 'pages/' + page + '.png'); 
    } 

任何帮助或方向是非常赞赏

+0

在你的示例代码中,'JPG'从哪里得到它的值? – wizulus

+0

喜欢..你想破译什么? – wizulus

+0

@卡洛斯这是可能的,但你必须以某种方式获取你的数据。从你的问题来看,你是如何做到这一点并不明确。需要更多信息。 – Brad

回答

0

首先,使用jQuery。

然后,让我们说,你有你类似这样的标记:

<img src="images/1x1.png" test-src="images/3" test-ext="jpg|png|gif" /> 

然后,你可以像这样的onerror事件处理程序添加到图像:

jQuery(function ($) { 
    $('img[test-src][test-ext]').each(function() { 
     // closures 
     var $img = $(this); 
     var sSrc = $img.attr('test-src'); 
     var sTestSrc = sSrc; 
     var aExtensions = $img.attr('test-ext').split('|'); 
     var iTest = 0; 
     var fAttemptLoad = function() { 
      if (iTest < aExtensions.length) { 
       sTestSrc = sSrc + '.' + aExtensions[iTest]; 
       $img.attr('src', sTestSrc); 
      } 
     }; 

     // event method closures 
     var fFailTest = function() { 
      // increment test extension 
      iTest++; 
      // if there are still tests to run? 
      if (iTest < aExtensions.length) { 
       fAttemptLoad(); 
      } 
     }; 

     // event handler 
     $img.error(fFailTest); 

     // initial state, start test. 
     fAttemptLoad(); 
    }); 
}); 

这里是一个小提琴:

http://jsfiddle.net/9d276/6/