如何在AJAX加载图像后获取EXIF数据?

时间:2013-11-20 05:36:26

标签: javascript jquery ajax exif

我正在为NapaWapa.com制作一款可刷卡的葡萄酒图像查看器,我的工作效果非常好:http://www.tonyjacobson.com/napawapa/gallery/index.html

我正在使用jquery插件来读取库中图像的exif数据。但是,插件似乎仅在src属性是硬编码时才起作用 - 而不是在通过AJAX加载图像时。你们中的任何一位专家都可以看一看JS(http://www.tonyjacobson.com/napawapa/gallery/js/jquery.exif.js),看看你是否可以推荐修改插件代码来推荐修复?

以下是插件代码的特定部分,用于处理读取EXIF数据:

// HTML IMG EXAMPLE
<img class="lazyOwl" data-src="images/03.jpg" exif="true" />

// JAVASCRIPT CLICK TO TEST IMG EXIF DATA
$("img").on('click', function(event){
    $(this).exifLoad();
    console.log( "HIT: " + $(this).exif('Make') );
});


// JQUERY PLUGIN CODE EXCERPT
function loadAllImages()
{
    var aImages = document.getElementsByTagName("img");
    for (var i=0;i<aImages.length;i++) {
        if (aImages[i].getAttribute("exif") == "true") {
            if (!aImages[i].complete) {
                addEvent(aImages[i], "load",
                    function() {
                        EXIF.getData(this);
                    }
                );
            } else {
                EXIF.getData(aImages[i]);
            }
        }
    }
}

// automatically load exif data for all images with exif=true when doc is ready
jQuery(document).ready(loadAllImages);

// load data for images manually
jQuery.fn.exifLoad = function(fncCallback) {
    return this.each(function() {
        EXIF.getData(this, fncCallback)
    });
}

1 个答案:

答案 0 :(得分:1)

我正在搜索类似的问题,并从thread找到了帮助。尝试修改您的Javascript(不是插件)以包含此代码:

$("img").load(function() {
  $(this).exifLoad(function() {
    // exif data should now be ready...
  });
});