2012-06-21 33 views
0

我正在爲Blogger網站開發小工具。 我想要使用Javascript在網站的Feed(Atom)中使用特定標記從前四個帖子中獲取標題,鏈接和第一張圖片。 到目前爲止,我的標題和鏈接都來自這些帖子,並且在小工具中以HTML顯示。下面是代碼:使用JavaScript從Atom提要中提取圖像的來源

<?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> 

上面的代碼給出了一個空白的小工具和螢火蟲報告說

myElement.getElementsByTagName( 「IMG」)[0]是未定義

I」我試過改變它一下:

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

在小工具中給出了這個

[對象節點列表]

可有人告訴我,我做錯了什麼嗎?我只需要獲取第一張圖片的源代碼(src)。我可以做的小工具的其餘部分,但這個問題的一小部分讓我完全沮喪在這個階段。

在此先感謝。

回答

2

我在代碼中注意到的一個潛在問題是,您的window.onload實際上正在運行initialize()腳本函數,而不是像我想的那樣設置window.onload = initializewindow.onload = function(){initialize()};

鑑於你的代碼運行前的onload,這可以解釋爲什麼的getElementsByTagName不拉任何

編輯:我也建議看Best practice for using window.onload最佳實踐

+0

嗨,我想,並獲得相同的結果。 如果我只是使用行var imagesrc = myElement.getElementsByTagName(「img」);小工具返回標題加上鍊接,然後返回[object NodeList]。如果我刪除圖像的代碼,我會得到標題和鏈接。 –