LinkedIn API: динамический компонент пользовательского интерфейса

#javascript #html #linkedin

#javascript #HTML #LinkedIn

Вопрос:

Я пытаюсь динамически заполнить поле идентификатора данных общедоступным URL, полученным из результатов поиска linkedin. Предположим, что я могу вернуть URL общедоступного профиля. Если я помещу тот же скрипт непосредственно на страницу (не через javascript), это сработает.

 resultsHtml  = '<script type="IN/MemberProfile" data-id="' currResult.publicProfileUrl '" data-format="inline"/>'; 
$("#search-results").html(resultsHtml);
  

Для справки

http://developer.linkedin.com/docs/DOC-1278

Комментарии:

1. это jQuery, который вы используете? вы должны добавить его в теги, если это так

2. Если вы вручную введете URL профиля, это сработает? Это то, что вы имели в виду?

Ответ №1:

если вы используете jQuery, а я предполагаю, что это так, вам сначала нужно запустить этот первый js-файл: http://platform.linkedin.com/in.js

поэтому убедитесь, что у вас есть:

 <script src="http://platform.linkedin.com/in.js" type="text/javascript"></script>
  

в заголовке документа.

а затем в теле, когда вы его вызываете:

 $(function(){

   ...
   //here is the hack:
   resultsHtml  = '<sc' 'ript type="IN/MemberProfile" data-id="' currResult.publicProfileUrl '" data-format="inline"></sc' 'ript>';
   //remember to close script tags 

   $("#search-results").html(resultsHtml);

   ...

})
  

или вы можете попробовать это:

 $(function(){

   ...

   var $script = $('<script>',{
                    'data-format': 'inline',
                    type: 'IN/MemberProfile',
                    'data-id': "' currResult.publicProfileUrl '"
                  })

   $("#search-results").html(resultsHtml);
   $("#search-results").append($script);
   ...

})
  

Ответ №2:

Я предполагаю, что вы пытаетесь динамически добавить тег скрипта LinkedIn (с динамическим идентификатором данных) при подготовке / выгрузке страницы или после. Библиотека LinkedIn просканирует страницу на наличие тегов скрипта для разбора в page ready, поэтому она может не увидеть ваш динамический тег вовремя.

Согласно http://developer.linkedin.com/docs/DOC-1292#Parsing_Tags вы можете вызвать IN.parse(domNode) для отображения любых динамически добавляемых тегов LinkedIn. Итак, после вашего примера кода вы можете сделать:

 IN.parse($("#search-results")[0]);
  

Ответ №3:

 resultsHtml  = '<script type="IN/MemberProfile" data-id="' currResult.publicProfileUrl '" data-format="inline"/>';
  

в примере не хватает одной вещи — закрытия </script>

 resultsHtml  = '<script type="IN/MemberProfile" data-id="' currResult.publicProfileUrl '" data-format="inline"></script>';
  

таким образом, это может выглядеть как их пример:

 <script src="http://platform.linkedin.com/in.js" type="text/javascript"></script>
<script type="IN/MemberProfile" data-id="/in/jeffweiner08" data-format="inline"></script>