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的回调,该Fancybox将HTML内容放入“标题”部分。在本部分中,我放置了图像的分辨率,下载链接和一个bit.ly链接,以便在此网站上返回该图像-http://schnell.dreamhosters.com/wallpapers.php?page=12最初,我在bit.ly URL上遇到XMLHTTPRequest问题,但是我似乎已经解决了那些。
但是现在的问题是,在返回语句出现之前,我需要变量'html'才能将所有进入fancybox的html内容包含在内。尽管看起来一切都在return语句之前发生,但jQuery异步地执行$ .getJSON()函数,因此,在dlLink结束之前'html'内将包含某些内容并不为人所动。我需要一种方法来使事情按代码中所示的顺序进行,以便$ .getJSON请求和后续的回调函数在返回return语句之前始终完成其所做的工作。
编辑-我想出了办法,上面的代码可以按照我的意愿正确执行。请参阅下面的答案。
最佳答案
好的,所以我在意识到一些事情之后终于解决了这个问题。
1-在$ .getJSON()的回调函数中,您应该使用JSON数据完成所有工作。
2-我尝试放置链接的区域的ID为'fancybox-title',所以我继续说$('#fancybox-title').append(stuff);
3-Fancybox的标题(至少在内部显示时)仅会调整其格式设置标题时已经存在的文本行的大小。之后添加的任何内容都不会考虑大小,因此标题区域将保持不变,并且您会看到文本行逐渐爬入图片中(很难找到)。为了解决这个问题,我确保将第三行文本添加到我的'html'变量-<br />http://
中,这使得Fancybox的大小成为3行文本的标题区域。然后,在回调函数中,我使用substr从http://到末尾的所有bit.ly链接。
关于javascript - 好的,我有bit.ly链接,但是现在jQuery的异步性正在阻碍,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/3861068/