Как избежать повторного разбора элементов XFBML? - PullRequest
2 голосов
/ 28 января 2011

Я использую JavaScript Facebook SDK для анализа элементов xfbml.Тем не менее, я также использую пажинацию ajax.Вот что происходит.

Я загружаю первую страницу элементов, каждый из которых содержит кнопку «Мне нравится» и поле комментария в XFBML.Я вызываю метод разбора SDK для разбора элементов.

Если пользователь загружает следующую страницу элементов, они добавляются в DOM через Ajax.Однако, когда я теперь вызываю метод разбора, элементы первой страницы снова анализируются, что явно нежелательно.

Я знаю, что метод разбора предлагает другой элемент root, но поскольку все объектыбратья и сестры, это не вариант для меня.есть ли способ сказать парсингу только тем элементам парсинга, которые он еще не проанализировал?или мне придется удалить все старые теги xfbml, которые уже были проанализированы?

1 Ответ

1 голос
/ 28 января 2011

FB.XFBML.parse () - единственная доступная функция для повторного анализа XFBML, и вы можете либо передать ему элемент DOM в качестве отправной точки, либо ничего не передавать, и он будет анализировать весь ваш объектСтруктура DOM.

Поскольку это ваши единственные варианты, я бы посоветовал вам изменить ваш вызов Ajax.Вместо того чтобы вызов Ajax напрямую вставлял ваши новые элементы в их окончательное расположение в DOM, затрудняя их повторный анализ, почему бы не создать <div> (или какой-либо другой элемент), загрузить в него содержимое, извлеченное Ajax, и затемпозвонить FB.XFBML.parse() на <div> перед перемещением содержимого в соответствующее место?Вы можете скрыть <div> и использовать второй параметр обратного вызова функции разбора для выполнения перемещения:

//do Ajaxy stuff here to insert new content into hidden div 'foo'

FB.XFBML.parse(document.getElementById('foo'), function() {        
    document.getElementById('yourContent').innerHTML += document.getElementById('foo').innerHTML;
});

Я некоторое время не выполнял Javascript, поэтому извините за любой вопиющий синтаксис, но, надеюсь, выполучить идею.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...