0

Я разрабатываю расширение Chrome и пытаюсь добавить свой сайт RSS-канал с изображениями в расширение с помощью API фида Google. Но его ошибка метаниеUncaught TypeError: Не удается прочитать свойство «0» неопределенного (API фида Google)

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; 

Но го e weird Thing заключается в том, что когда я добавляю ссылку на Feed этого сайта http://mightydeals.com/feed, тогда он работает !.

+0

ров, скорее всего проблема тайминги. проверьте его с помощью отладчика. –

+0

в этом фиде нет 'mediaGroups' ... – Cornwell

+0

Тогда как работает Feed From Mightydeals без ошибок? –

ответ

0

Проблема в корневом URL. ответ данных URL-адреса фида не содержит свойство mediaGroups. Поэтому, когда вы пытаетесь получить значение индекса 0 из него, он бросает 0-индексную ошибку. Для решения проблемы сначала вам необходимо проверить, что данные ответа содержат ключ mediaGroups или нет. Как если (записи [я] .mediaGroups & & записи [я] .mediaGroups.length> 0)

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