簡體   English   中英

未捕獲的TypeError:無法讀取未定義的屬性“ 0”(Google Feed API)

[英]Uncaught TypeError: Cannot read property '0' of undefined (Google Feed API)

我正在開發Chrome擴展程序,並嘗試使用Google Feed API在擴展程序中添加帶有圖像的網站RSS Feed。 但是它的投擲錯誤

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;

但是奇怪的是,當我添加此網站的Feed鏈接http://mightydeals.com/feed時,它可以正常工作!

問題出在Feed網址中。 供稿網址數據的響應不包含mediaGroups屬性。 因此,當您嘗試從中獲取索引0值時,將引發0索引錯誤。 要首先解決此問題,您需要檢查響應數據是否包含mediaGroups鍵。 就像if(entries [i] .mediaGroups && entry [i] .mediaGroups.length> 0)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM