0

我正在尝试使用ImageResolver插件并将其调整为与 php 数组一起使用。

将代码剥离到此会返回没有表单的图像:

$(function(){

    var url = $('#url').val();
    ImageResolver.resolve(url, function(image){
        if (image) {
            $('#result').html('<img src="' + image + '" alt="">');
        } else {
            $('#result').html('<h2>No image found</h2>');
        }

});
});

我想调整它以在 php foreach 循环中工作。结果将在下一个class='result'div 上被替换。IE:页面加载了查询中的url后,该函数将解析url,如果找到则返回图片链接。我猜我需要使用(each)or this(),但我无法弄清楚。

有人能指出我正确的方向吗?

4

1 回答 1

0
        <script src="ImageResolver/URI.min.js"></script>
        <script src="ImageResolver/ImageResolver.js"></script>



    <?
        $javascriptarray = 'var urls = [';
        $counter=0;
        foreach (array('http://www.apple.com/','http://github.com/','http://www.test.com/') as $url) 
        {
            if ($counter++ > 0) $javascriptarray .= ',';
            $javascriptarray .= '"'.$url.'"';
        }
        $javascriptarray .= '];';   
    ?>
<script>    
<?=$javascriptarray?>

//The ImageResolver will try all the resolvers one after the other
//in the order of their registration

//Resolvers that guess the image URL
ImageResolver.register(new FileExtensionResolver());
ImageResolver.register(new ImgurPageResolver());
ImageResolver.register(new NineGagResolver());
ImageResolver.register(new InstagramResolver());

//Resolvers that need extra ajax requests
ImageResolver.register(new ImgurAlbumResolver());
ImageResolver.register(new OpengraphResolver());
ImageResolver.register(new WebpageResolver());

//Some jQuery code to make the demo work
//Use a crossdomain proxy (required by some plugins)
$.ajaxPrefilter('text', function(options) {
    options.url = "http://furious-stream-4406.herokuapp.com?src=" + encodeURIComponent(options.url);
});

$(function(){


var length = urls.length,
url = null;
    for (var i = 0; i < length; i++) {
            url = urls[i];
            ImageResolver.resolve(url, function(image){
            if (image) {
                $('#result').append('<img src="' + image + '" alt=""><br>');
            } else {
                $('#result').append('<h2>No image</h2>');
                //$('#result').append('<h2>No image found for ' + url + '</h2>');
            }
        }); 
    }
}); 

</script>   

注意因为 ImageResolver.resolve() 异步工作,您可能会得到意想不到的结果。在上一个调用完成之前再次调用 ImageResolver.resolve() 将$('#result').append('<h2>No image found for ' + url + '</h2>');通过示例将 url 更改为您上次调用的 url。为了防止这种情况,您需要在 for 循环中初始化一个新的解析器。请参阅:Javascript 原型和实例创建

于 2013-04-16T00:12:49.930 回答