2

我想知道我怎样才能做到这一点。

我需要从外部链接站点获取所有图像并将它们显示在其他站点中。没有jQuery可以做吗?用一个简单的javascript或flash?

任何人都可以建议某种教程之类的吗?

如果是 javascript,那么它必须是非常简单的代码,因为我想让它在 eBay 列表中工作。

示例:在列表中将出售 XXX 手机的支架,我想在底部放一张幻灯片或类似的东西,用于完全相同的物品(来自同一类别)。我想给它一个功能,所以我只需要更改类别的链接,图片就会自动更改。可能吗?

谢谢,

请如果我没有说清楚,请询问,我会更详细地解释。

4

1 回答 1

5

注意:提问者表示此答案在 Ebay 列表中不起作用。
除此之外,它工作得很好,它会激怒一些“网络开发者”(LOL)。我暂时把它留在这里。

我有一个偷偷摸摸的怀疑你没有拥有/控制外部链接站点,因此“从外部链接站点获取所有图像并在其他站点中显示它们”(如要求的那样),将受到跨域安全限制。

因此,为了重新获得“用户的权力”,只需使用http://query.yahooapis.com/
jQuery 不是严格需要的。

示例 1:
使用类似 SQL 的命令:

select * from html 
where url="http://stackoverflow.com" 
and xpath='//div/h3/a'

以下链接将抓取 SO 以获取最新问题(绕过跨域安全公牛$#!7): http://query.yahooapis.com/v1/public/yql?q=select%20%2a%20from%
20html %20%0Awhere%20url%3D%22http%3A%2F%2Fstackoverflow.com%22%20%0Aand%20xpath%3D%27%2F%2Fdiv%2Fh3%2Fa%27%3B&format=json&callback=cbfunc

如您所见,这将返回一个 JSON 数组(也可以选择 xml)并调用回调函数:cbfunc

在您的情况下,您会寻找图像链接并将它们包含在您的页面中。

示例 2:
正如下面评论中所问的,这个纯 JavaScript示例不仅从 Ebay 商店获取图像 URL,它还获取产品标题产品 URL(将它们显示为超链接图像,产品标题作为图片的标题)。因此,它还展示了如何动态构建 yql 字符串以及如何处理返回的数据。

function cbfunc(json){
   if(json.query.count){
      var data=json.query.results.div;
      var i=0, l=data.length, htm='';
      for(;i<l;i++){
         htm+='<a href="'+data[i].a.href+'">' +
                 '<img title="'+data[i].a.img.title+'"' +
                       ' src="'+data[i].a.img.src+'">' +
              '</a>\n';
      }
      document.getElementById('output').innerHTML=htm;
   } else {
      alert('Error: nothing found'); return false;
   }
}

function fetchEbayStore(url){
   var yql="select a.href, a.img.src, a.img.title" +
           " from html" +
           " where url='" + url + "'" +
           " and xpath='//td/div[@class=\"image\"]'";
   yql="http://query.yahooapis.com/v1/public/yql?q=" +
       encodeURIComponent(yql) +
       "&format=json" +
       "&callback=cbfunc";
   getJSON(yql); //you need to provide getJSON or use a library
}

请参阅此 'quick 'n dirty' jsfiddle以查看上面的示例。请记住,这只是为了解释,而不是生产!

更多信息:阅读 yahoo 的yql文档,查看构造函数右侧的实时示例。

于 2012-08-22T19:27:41.337 回答