2015-01-12 21 views
-2

從簡短的教程中,我開始使用這個小部件腳本來抓取Blogger上的帖子。在我最初製作的主題中,它沒有錯誤地正常工作。然而,當我嘗試使用完全相同的代碼在我工作的一個新的模板,它拋出的錯誤:無法讀取未定義的屬性'url'

Uncaught TypeError: Cannot read property 'url' of undefined

爲了上帝的愛我想不通爲什麼它這樣做。爲了進行調試,我嘗試刪除所有其他腳本,將代碼放置在<body>標記後面,並在</body>標記之前。

我真的不知道關於腳本的任何事情,並且把這個小部件作爲學習的起點,但是我已經把它弄糟了。現在看,我只是沒有看到問題。下面是該腳本:

<script type="text/javascript"> 
    //<![CDATA[ 
    function postGrabber(json) { 

     // The Magic 
     for (var i = 0; i < json.feed.entry.length; i++) { 
      for (var j = 0; j < json.feed.entry[i].link.length; j++) { 
       if (json.feed.entry[i].link[j].rel == 'alternate') { 
        var postUrl = json.feed.entry[i].link[j].href; 
        break; 
       } 
      } 

      // Thumbnail Stuff 
      var orgImgUrl = json.feed.entry[i].media$thumbnail.url ? json.feed.entry[i].media$thumbnail.url : 'http://1.bp.blogspot.com/-mxinHrJWpBo/VD6fqbvI74I/AAAAAAAAcn8/LslulDeOROg/s72-c/noimage-chalkboard.jpg'; 
      var newImgUrl = orgImgUrl.replace('s72-c', 's' + imgSize + '-c'); 
      var imgTag = '<a class="item-link-post" href="' + postUrl + '"><img class="item-img-thumbnail" src="' + newImgUrl + '" width="' + imgSize + '" height="' + imgSize + '"/></a>'; 

      var authorName = json.feed.entry[i].author[0].name.$t; 
      var authorURL = json.feed.entry[i].author[0].uri.$t; 
      var authorOriImgUrl = json.feed.entry[i].author[0].gd$image.src; 
      var authorNewImgUrl = authorOriImgUrl.replace('s512-c', 's' + authorImgSize + '-c'); 
      var authorImgTag = '<a class="item-link-author" href="' + authorURL + '" target="_blank" rel="nofollow"><img class="item-img-author" src="' + authorNewImgUrl + '" alt="' + authorName + '"/></a>'; 

      // Standard Stuff 
      var postTitle = json.feed.entry[i].title.$t; 
      var postCommentCount = json.feed.entry[i].thr$total.$t; 

      var postSummary = json.feed.entry[i].summary.$t; 
      var entryShort = postSummary.substring(0, '' + summaryLength + ''); 
      var entryEnd = entryShort.lastIndexOf(" "); 
      var postContent = entryShort.substring(0, entryEnd) + '...'; 

      var postDate = json.feed.entry[i].updated.$t ? json.feed.entry[i].updated.$t : json.feed.entry[i].published.$t; 
      var shortDate = postDate.substring(0,10); 

      // Let's Make Options Here 
      var toggleImg = showImg ? '' + imgTag + '' : ''; 
      var toggleTitle = showTitle ? '<h1 class="item-title">' + postTitle + '</h1>' : ''; 
      var toggleSummary = showSummary ? '<p class="item-snippet">' + postContent + '</p>' : ''; 
      var toggleDate = showDate ? '<span class="item-date">' + shortDate + '</span>' : ''; 
      var toggleAuthorImg = showAuthorImg ? '' + authorImgTag + '' : ''; 
      var toggleCommentCount = showCommentCount ? '<span class="item-comment-count">' + postCommentCount + '</span>' : ''; 

      // The Output 
      var itemPost = '<div class="item-post"><div class="item-imgs">' + toggleImg + toggleAuthorImg + '</div>' + toggleCommentCount + '<a class="item-link" href=' + postUrl + '>' + toggleTitle + '</a>' + toggleSummary + toggleDate + '</div>'; 

      // Let's Write It Down 
      document.write(itemPost); 
     } 
    } 
    //]]> 
</script> 
<script type="text/javascript"> 
    // The Default Options 
    var imgSize = 96; 
    var summaryLength = 142; 
    var authorImgSize = 36; 
    var showImg = true; 
    var showTitle = true; 
    var showSummary = true; 
    var showDate = true; 
    var showAuthorImg = true; 
    var showCommentCount = true; 
</script> 
<script src="/feeds/posts/summary?orderby=published&amp;max-results=5&amp;alt=json-in-script&amp;callback=postGrabber"></script> 
+0

錯誤消息指出網址的母公司是不確定的,但問題的標題說的網址是未定義? – Mritunjay

+0

我改變了標題。 – Xarcell

回答

1

在所有代碼的思路,我可以看到一個url財產的唯一引用在這裏...

var orgImgUrl = json.feed.entry[i].media$thumbnail.url ? json.feed.entry[i].media$thumbnail.url : 'http://1.bp.blogspot.com/-mxinHrJWpBo/VD6fqbvI74I/AAAAAAAAcn8/LslulDeOROg/s72-c/noimage-chalkboard.jpg'; 

所以,我猜是什麼錯誤是說json.feed.entry[i]沒有名爲media$thumbnail的屬性...它是「未定義的」。您需要糾正該問題,無論是輸入錯誤還是其他內容,請確保該屬性存在。

如果屬性是「可選」,然後改變你的評估,以檢查爲低於財產的存在......

var orgImgUrl = (json.feed.entry[i].media$thumbnail != null 
        && json.feed.entry[i].media$thumbnail.url) 
       ? json.feed.entry[i].media$thumbnail.url 
       : 'http://1.bp.blogspot.com/-mxinHrJWpBo/VD6fqbvI74I/AAAAAAAAcn8/LslulDeOROg/s72-c/noimage-chalkboard.jpg'; 
+0

謝謝,這似乎解決了這個問題。我想我沒有正確地寫腳本開始。我只是假設財產被自動檢查。 – Xarcell

相關問題