我在一个模态窗口中加载了facebook评论插件 - 通过ajax将内容注入到该窗口中。因此,模态本身没有url,虽然我在设置fb评论插件时传递了一个假URL,以便facebook区分模态页面。
问题是虽然评论工作正常但Facebook显示一条丑陋的警告信息,因为它无法访问我告诉它该网页已开启的网址。
代码是:
$(".element").click(function () {
$("#page").slideDown();
$.get("/articles" + $(this).children(".ajaxloc").text(), function (data) {
$("#ajax-content").html(data);
});
$(document).ajaxComplete(function () {
var url = $('#ajax-content h1').text().replace(" ", "");
$('#fb-comments').remove(); // remove any old comment plugins
$("#fbCommentsPlaceholder").html('<div class="fb-comments" id="fb-comments" data-href="https://example.com/' + url + '"data-width="620" data-numposts="5" data-colorscheme="light"></div>');
FB.XFBML.parse(); // re-render the comments plugin in order to set it up on next modal click
});
});
我想有一些涉及重定向或历史状态的解决方案,但由于插件工作正常,我不想过度设计我不需要的解决方案。
我已经尝试将其隐藏在CSS中 - 甚至在ajaxComplete函数中以及在FB.XFBML.parse()之后,但这似乎不起作用。
(请注意,上面的网址已替换为“http://example.com/”)
根页面中包含所有og标记,fb设置中的app域字段前面没有www或任何内容。
答案 0 :(得分:0)
我通过将URI段设置为查询字符串而不是目录来解决此问题。
而不是:
var url = 'https://example.com' + value;
使用此:
var url = 'https://example.com/?key=' + value;
这样页面不需要存在,但仍然满足Facebook独特的URL要求。