Я использую плагин «Рекомендации» на своем сайте, и он загружается очень медленно, в основном с Firefox.
Я считаю, что большинство плагинов FB, похоже, имеют эту проблему. Возможно, из-за созданного ими iFrame плагином создается много данных.
Было бы лучше сделать мой собственный JS Verson?
Если так, есть ли у кого-нибудь указатели для доступа к тем же данным через вызов FQL / AJAX?
Следуя комментариям ниже, я решил объяснить, что именно я делаю, я загружаю плагины динамически, используя скрипт ниже. В настоящее время отображается только плагин с рекомендациями, но в конечном итоге будут включены все упомянутые.
ОДНАКО ... Я заметил эту проблему даже при непосредственном добавлении плагина на страницу.
$ (документ) .ready (function () {
addFBelements ();
});
//==== THIS GENERATES SOCIAL ELEMENTS ====
function addFBelements() {
window.fbAsyncInit = function () { // sets up asynchronous loading of FB elements
FB.init({ // initialise FB
appId: 'MYAPPID',
status: true, // check login status
cookie: true, // enable cookies to allow the server to access the session
xfbml: true, // parse XFBML
oauth: true
});
};
(function () {
if ($("#fb-root").length <= 0) {
$('body').prepend('<div id="fb-root"></div>'); // add FB div to top of page if not already there
};
var e = document.createElement('script'); // load the Facebook Javascript file
e.src = document.location.protocol + '//connect.facebook.net/en_US/all.js';
e.async = true;
document.getElementById('fb-root').appendChild(e);
$.getScript(document.location.protocol + '//apis.google.com/js/plusone.js'); // Load Google Plus files
$.getScript(document.location.protocol + '//platform.twitter.com/widgets.js'); // load Twitter files
renderButtons(); // render the buttons in the page
} ());
};
// ends setting up of FB/Twitter etc links and JS files
// add Social elements to the pages where required with correct sharing URLs
function renderButtons() {
var linkUrl = window.location.href;
if ($('.googlePlus').length > 0) {
$('.googlePlus').html('<g:plusone href="' + linkUrl + '" size="medium" style="float:right"></g:plusone>');
};
if ($('.fbLike').length > 0) {
$('.fbLike').html('<fb:like send="false" href="' + linkUrl + '" layout="button_count" width="80" show_faces="false" font="arial"></fb:like>');
};
if ($('.fbSend').length > 0) {
$('.fbSend').html('<fb:like send="false" href="' + linkUrl + '" layout="button_count" width="80" show_faces="false" font="arial"></fb:like>');
};
if ($('.tweet').length > 0) {
$('.tweet').html('<a href="http://twitter.com/share" data-url="' + linkUrl + '" class="twitter-share-button" data-count="none" data-via="hartnollguitars">Tweet</a></span>')
};
if ($('.fbComments').length > 0) {
$('.fbComments').html('<fb:comments href="' + linkUrl + '" num_posts="3" width="640"></fb:comments>');
};
if ($('.fbRecommend').length > 0) {
$('.fbRecommend').html('<img style="border: none" alt="" src="images/like_us_home.png"><fb:activity recommendations="true" border_color="#000000" font="arial" colorscheme="dark" header="false" height="400" width="220" site="www.hartnollguitars.co.uk"><span>');
};
};
// == END OF SETTING UP SOCIAL NETWORKING ELEMENTS. ====
Вы можете видеть, что скрипт устанавливает все мои элементы FB / Twitter и т. Д. И вставляет их в элементы с соответствующими классами, где они присутствуют.
Элемент appId не является обязательным для рассматриваемых целей, но у меня также есть раздел «События», в котором отображаются мои события FB и имя входа в FB, для обоих мне нужен appId для проверки.
(просто пытаюсь объяснить, что хотя показывать рекомендации громоздко, он предназначен для гораздо большего!)