2012-06-21 3 views
0

Я работаю над гаджетом для сайта Blogger. Я хочу получить название, ссылку и первое изображение из первых четырех сообщений с определенным тегом в фиде сайта (Atom) с помощью Javascript. До сих пор у меня есть заголовок и ссылка, входящие в эти сообщения, отображаемые с помощью HTML в гаджете. Вот код:Извлечение источника изображения из фида Atom с использованием Javascript

<?xml version="1.0" encoding="UTF-8" ?> 
<Module> 
<ModulePrefs title="Retrieve Featured Blog Posts" height="150" author="John Behan" /> 
<Content type="html"> 
    <![CDATA[ 
     <script type="text/javascript" src="http://www.google.com/jsapi"></script> 
     <script type="text/javascript"> 
      google.load("feeds", "1");    
     </script> 
     <script type="text/javascript"> 
      function initialize() { 

       var feed = new google.feeds.Feed("http://test-ohomind.blogspot.com/feeds/posts/default/-/featured"); 
       feed.load(function(result) { 
        if (!result.error) { 
         var container = document.getElementById("feed"); 
         for (var i = 0; i < result.feed.entries.length; i++) { 
          var entry = result.feed.entries[i]; 

          var myElement = document.createElement('div'); 
          var content = entry.content; 
          myElement.innerHtml = content; 

          var imagesrc = myElement.getElementsByTagName("img")[0].src; 

          var mydiv = document.getElementById("mydiv"); 
          var newcontent = document.createElement('p'); 

          newcontent.innerHTML = '<a href="' + entry.link + '">' + entry.title + '</a><br />' + imagesrc; 

          while (newcontent.firstChild) { 
           mydiv.appendChild(newcontent.firstChild); 
          } 
         } 
        } 

       }); 
      } 
      window.onload = initialize(); 
     </script> 
      <body> 

       <div id="mydiv"> 

       </div> 
      </body> 
    ]]> 
</Content> 
</Module> 

Приведенный выше код дает пустой гаджет и сообщает Firebug, что

myElement.getElementsByTagName ("IMG") [0] не определено

Я я попробовал изменить его немного:

var imagesrc = myElement.getElementsByTagName("img"); 

дает это в гаджетах

[объект NodeList]

Может кто-то показать мне, что я делаю неправильно, пожалуйста? Мне просто нужно получить источник (src) первого изображения. Остальные гаджеты, которые я могу сделать, но этот маленький кусочек проблемы, я полностью разочарован на этом этапе.

Заранее спасибо.

ответ

2

Одна из потенциальных проблем, которые я заметил в вашем коде, заключается в том, что ваш window.onload фактически запускает функцию сценария initialize(), а не устанавливает window.onload = initialize или window.onload = function(){initialize()};, поскольку я считаю, что вы намереваетесь.

Учитывая, что ваш код работает, прежде чем OnLoad, это объясняет, почему getElementsByTagName не тянет что-нибудь

Edit: Я хотел бы также рекомендовать глядя на Best practice for using window.onload для наилучшей практики

+0

Привет, Я попробовал и получить такой же результат. Если я просто использую строку var imagesrc = myElement.getElementsByTagName ("img"); гаджет возвращает название плюс ссылку, а затем [object NodeList]. Если я удалю код для изображения, я получу заголовок и ссылку. –

Смежные вопросы