0

Chrome拡張機能を開発しており、GoogleフィードAPIを使用して拡張機能の画像付きウェブサイトRSSフィードを追加しようとしています。 しかし、その投げエラーUncaught TypeError:未定義(GoogleフィードAPI)のプロパティ '0'を読み取ることができません。

Uncaught TypeError: Cannot read property '0' of undefined 

ここではスクリプトだ

function myGetElementsByClassName(selector) { 
 
    if (document.getElementsByClassName) { 
 
     return document.getElementsByClassName(selector); 
 
    } 
 

 
    var returnList = new Array(); 
 
    var nodes = document.getElementsByTagName('div'); 
 
    var max = nodes.length; 
 
    for (var i = 0; i < max; i++) { 
 
     if (nodes[i].className == selector) { 
 
      returnList[returnList.length] = nodes[i]; 
 
     } 
 
    } 
 
    return returnList; 
 
} 
 

 
var rssReader = { 
 
    containers : null, 
 

 
    // initialization function 
 
    init : function(selector) { 
 
     containers = myGetElementsByClassName(selector); 
 
     for(i=0;i<containers.length;i++){ 
 
      // getting necessary variables 
 
      var rssUrl = containers[i].getAttribute('rss_url'); 
 
      var num = containers[i].getAttribute('rss_num'); 
 
      var id = containers[i].getAttribute('id'); 
 

 
      // creating temp scripts which will help us to transform XML (RSS) to JSON 
 
      var url = encodeURIComponent(rssUrl); 
 
      var googUrl = 'https://ajax.googleapis.com/ajax/services/feed/load?v=1.0&num='+num+'&q='+url+'&callback=rssReader.parse&context='+id; 
 

 
      var script = document.createElement('script'); 
 
      script.setAttribute('type','text/javascript'); 
 
      script.setAttribute('charset','utf-8'); 
 
      script.setAttribute('src',googUrl); 
 
      containers[i].appendChild(script); 
 
     } 
 
    }, 
 

 
    // parsing of results by google 
 
    parse : function(context, data) { 
 
     var container = document.getElementById(context); 
 
     container.innerHTML = ''; 
 

 
     // creating list of elements 
 
     var mainList = document.createElement('ul'); 
 

 
     // also creating its childs (subitems) 
 
     var entries = data.feed.entries; 
 
     for (var i=0; i<entries.length; i++) { 
 
      var img = new Image(); 
 
      img.src = entries[i].mediaGroups[0].contents[0].url; 
 
      listItem.appendChild(img); 
 
      var listItem = document.createElement('li'); 
 
      var title = entries[i].title; 
 
      var contentSnippet = entries[i].contentSnippet; 
 
      var contentSnippetText = document.createTextNode(contentSnippet); 
 

 
      var link = document.createElement('a'); 
 
      link.setAttribute('href', entries[i].link); 
 
      link.setAttribute('target','_blank'); 
 
      var text = document.createTextNode(title); 
 
      link.appendChild(text); 
 

 
      // add link to list item 
 
      listItem.appendChild(link); 
 

 
      var desc = document.createElement('p'); 
 
      desc.appendChild(contentSnippetText); 
 

 
      // add description to list item 
 
      // listItem.appendChild(desc); 
 

 
      // adding list item to main list 
 
      mainList.appendChild(listItem); 
 
      
 
     } 
 
     container.appendChild(mainList); 
 
    } 
 
}; 
 

 
window.onload = function() { 
 
    rssReader.init('post_results'); 
 

 
}
 <div class="post_results" id="post_results1" rss_num="4" rss_url="http://www.pixlov.com/feed"> 
 
      <div class="loading_rss"> 
 
       <img alt="Loading..." src="https://www.script-tutorials.com/demos/82/images/loading.gif" /> 
 
      </div> 
 
     </div>

問題は、このラインで

img.src = entries[i].mediaGroups[0].contents[0].url; 

しかし番目です奇妙なことは、私はこのウェブサイトのフィードリンクを追加するときですhttp://mightydeals.com/feedそれは動作します!

+0

堀そうtimmingの問題であれば。デバッガを使用して確認してください。 –

+0

そのフィードに 'mediaGroups'はありません... – Cornwell

+0

次に、フィードはどのようにエラーなしでMightydealsから働いていますか? –

答えて

0

問題はフィードURLにあります。フィードURLデータの応答にmediaGroupsプロパティは含まれません。したがって、インデックス0の値を取得しようとすると、0のインデックスエラーがスローされます。 問題を解決するには、最初にmediaGroupsキーを含む応答データを確認する必要があります。 同様 (エントリ[i]が.mediaGroups & &エントリ[i]が.mediaGroups.length> 0)

関連する問題