網頁

內蒙古之旅第七天:完

海風 2009年7月29日 02:39

4:45am Morning call XD,不過也不需要Morning call啦,根本沒睡。懷著依依不捨的心情收拾行裝,雖然這個步驟每天都在做,但今天執拾得特別慢。一邊拾,一邊回想這幾天所發生的事—草原、沙漠、石窟、懸空寺和王府井。

內蒙古之旅第六天:北京歡迎你

海風 2009年7月28日 01:02

5:15am Morning call。其實旅行來到第六天,對我們來說都差不多等於是最後一天了,因為明天其實是沒有行程,而我們亦要乘中午機回香港。最後一天,好好珍惜吧。

內蒙古之旅第五天:別了內蒙

海風 2009年7月20日 15:01

5:30am一天比一天早的Morning call又來了。吸取了先前的教訓,今天早了十五分鐘便起床了,高速準備好行李後打算找其他人快點去餐廳。可是另一間房的人只是剛剛起床=_=,最後只有我和阿Wing兩個早下去先用餐了。

內蒙古之旅第四天:沙漠

海風 2009年7月17日 22:45

6:30am一大清早又收到Morning call knock,這次是小張來叫我們呢。原來先前Joey已經敲了一次,但我們沒有人起床,而團友們都在吃早餐了。不用說也知道太陽已經高掛在天上。環顧四周,原來大家還在睡呢,看來大家都錯過了草原的日出。

內蒙古之旅第三天:大草原

海風 2009年7月12日 17:35

6:15am起床,morning call比昨天早了15分鐘。昨晚真是非常好睡,至少有冷氣,床又舒服。不過又要收拾行李了……。不愧是五星級酒店的餐廳,裝潢有氣派,冷氣又涼XD。

當文章數目為numPosts的倍數時的bug

2009年4月12日    

Water那裡看到的:

右邊RecentPost那欄,應該在當總文章數大於目前要顯示的文章數(numPosts)時,顯示「下一頁」的符號提供切換。但根據原本的設計,如果目前的文章數恰好等於numPosts,或是numPosts的倍數,則也同樣會出現「下一頁」的按鈕。

以下以numPosts=10為例。比如目前我的blog上面分類為lyric的文章只有10篇,那當我按下這個label之後,右邊會顯示這10篇文章的標題,以及「下一頁」的按鈕出來。但是實際上並已經沒有下一頁了,所以此時按了下一頁什麼事都不會發生。這就是那個小小的bug所在。這一樣的問題在文章數目為10的倍數時會反覆發生。

這邊其實有點麻煩,因為根據原本的作法,fetchPosts function會去取得10筆文章的資料進來,所以updateLabelPosts這個function裡面,並不知道這個label全部有幾篇文章,所以只能根據目前如果有10筆post時,就顯示出下一頁的按鈕。雖不精確,但也堪用了。

剛剛沒事想到一個小方法,也就是我們可以多設一個參數,讓他每次fetch多一筆資料,也就是11筆,但是每次顯示還是都只show出10筆,也就是說,當只要我有fetch到第11筆時,就顯示「下一頁」出來,這樣應該就符合需求了吧。

既然有bug當然要修正一下囉,不過原作者的修改方法會在neo.js多加一個fetchNum的參數,認為太麻煩的我就再把他修改一下啦。

原作者的做法是在找到function fetchPosts(label)之後將numPosts修改為fetchNum,但這裡我們把它改為numPosts+1。例如我將numPosts設為10,他會自動去fetch 11篇文章:

function fetchPosts(label) {
  var labelposts = document.getElementById("LabelPosts");
  var labeltitle = document.getElementById("LabelTitle");
  labeltitle.innerHTML = "<h2><img alt='Indicator' src='http://bloggerhacked.googlepages.com/indicator.gif'/>&nbsp;&nbsp;Updating...</h2><hr/>";
  if (label == '') {
     feedurl = blogurl + 'feeds/posts/default?orderby=published&start-index=' + startIndex + '&max-results=' + (numPosts+1) + '&alt=json-in-script&callback=updateLabelPosts';
  } else {
     label = label.replace(" ", "%20");
     feedurl = blogurl + 'feeds/posts/default/-/' + label + '?orderby=published&start-index=' + startIndex + '&max-results=' + (numPosts+1) + '&alt=json-in-script&callback=updateLabelPosts';
  }

和原作者做法一樣,在function updateLabelPosts(json)加上break,讓他顯示到第10篇文章的時候就停止,避免「最新文章」把11篇都顯示出來。

for (var i = 0; i < json.feed.entry.length; i++) {
  if(i==numPosts)
  break;

var entry = json.feed.entry[i];
var selfurl;

最後在將function updateLabelPosts(json)找到numPosts並將其修改成numPosts+1,令「下一頁」在有fetch到11篇文章的時間才顯示。

if (json.feed.entry.length == numPosts+1) {
  disp = disp + '<a href="javascript:fetchOlderPosts(\'' + label + '\');">Older&nbsp;>></a>';
}
disp = disp + '</p>';
labelposts.innerHTML = disp;

大功告成,這樣的做法將來只需要修改numPosts一個參數就可以了。

尚未有回應