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/

10-09 05:27
查看更多