【发布时间】:2016-06-14 09:26:57
【问题描述】:
尝试使用 AJAX 调用从 Facebook 加载内容的花式框弹出窗口。问题是链接在新窗口而不是弹出窗口中打开。
我正在成功进行绑定,并且我在同一页面中有一个参考图像,该参考图像与从 Facebook 成功抓取数据加载的脚本一起使用。这意味着脚本正在运行,但图像仍然无法在 fancybox 中打开,但我真的不明白为什么即使成功也无法访问脚本。我错过了什么?
编辑:我用警报做了一些实验,发现警报在脚本之前和之后弹出,但图像直到整个循环完成并且脚本没有出现在网站上不要在那之后跑。猜想我需要在页面上加载图像后绑定 .fancybox-thumb 项目才能正常工作。尝试了 complete: 函数,但它在加载图像之前运行。
编辑 2 结果是,如果我在 href 标记中输入“#”而不是 Facebook 的链接,fancybox 会触发,但会显示“无法加载内容”错误消息。
EDIT 3阅读fancybox,它说它支持添加的异步项目,但我不知道为什么它仍然不起作用
$(document).ready(function () {
$(".fancybox-thumb").fancybox({
helpers: {
title: { type: 'inside' },
buttons: {},
type: 'iframe',
thumbs: { width: 50, height: 50 },
overlay: { locked: false }
}
});
});
var accessToken = "XXX";
var postsURL = "https://graph.facebook.com/ALBUMID/photos/?fields=name,link&access_token=" + accessToken;
$.ajax({
url: postsURL,
method: 'GET',
dataType: "jsonp",
success: function (data) {
for (var i = 0; i <= data.data.length - 1; i++) {
var Description = ""
if (data.data[i].name != null) {
Description = data.data[i].name
}
var div = $("<div class='facebookimage'><a class='fancybox-thumb' href='https://graph.facebook.com/" + data.data[i].id.toString() + "/picture?type=normal" + "' rel='fancybox-thumb' title='" + Description + "'><img src='https://graph.facebook.com/" + data.data[i].id + "/picture?type=normal' /></a></div>");
div.appendTo($("#AlbumFeed"));
}
},
error: function (status) {
console.log("Facebook data could not be retrieved. Failed with a status of " + status);
}
});
HTML:
<div id="AlbumFeed"></div>
【问题讨论】:
-
您的代码(截至目前)无法真正运行。那里缺少东西。发布显示您的问题的完整代码。
-
我描述了这个问题。 fancybox 不会在图像上触发,因为图像是在 fancybox 的代码运行后加载的。我遗漏的代码是一个空的 div 和 accesstoken/albumid。
-
有几个位置可能会给您带来问题。如果您希望有人提供帮助,那么查看和调试工作代码会更容易,而不是从头开始猜测可能是什么问题。
-
修改了一些代码,看看能不能遇到和我一样的问题。