function dlLink(title, currentArray, currentIndex, currentOpts)
{
var img = new Image();
img.src = 'Gallery/Wallpapers/' + title;
html = img.width + ' x ' + img.height + '<br />'
+ '<a class = "nav" href = "Gallery/Wallpapers/' + title + '" target = "_blank">Download</a><br />http://';
// set up default options
var defaults = {
login: '*************',
apiKey: '*******************************',
longUrl: 'http%3A%2F%2Fschnell.dreamhosters.com%2Fwallpapers.php%3Fwp=' + title
};
// Build the URL to query
var daurl = "http://api.bit.ly/v3/shorten?"
+ "&login=" + defaults.login
+ "&apiKey=" + defaults.apiKey
+ "&longUrl=" + defaults.longUrl
+ "&format=json&callback=?";
// Utilize the bit.ly API
$.getJSON(daurl, function(results) {
$('#fancybox-title').append(results.data["url"].substr(7));
});
if(img.complete)
return html;
}
好的,这个函数的重点是它是一个 Fancybox 的回调,它将 HTML 内容放入它的“标题”部分。在本节中,我放置了图像的分辨率、下载链接和 bit.ly 链接,用于返回本网站上的图像 - http://schnell.dreamhosters.com/wallpapers.php?page=12 最初我使用的是 XMLHTTPRequest bit.ly URL 的问题,但我似乎已经解决了这些问题。
不过,现在的问题是,在返回语句出现之前,我需要变量“html”来拥有所有进入幻想框的 html 内容。虽然看起来一切都发生在 return 语句之前,但 jQuery 正在异步执行 $.getJSON() 函数,因此不能保证在 dlLink 结束之前 'html' 将包含内容。我需要一种方法来使事情的顺序发生在代码中,这样 $.getJSON 请求和随后的回调函数将始终在进入 return 语句之前完成它们正在做的事情。
编辑 - 我想出了该怎么做,上面的代码正确地按照我的意愿做。请看下面我的回答。