經過檢查.js的程式碼,發現fetch的部份會紀錄一個startIndex作為這一次fetch要開始的地方。因為這是一個全域變數,所以當user按到別的Label之後,startIndex會繼續沿用,所以當某一個Label的文章數沒有那麼多的時候,便沒辦法fetch到資料。
舉個例子說明這個情況。假設現在全部的文章有100篇,Label為blog的文章有5篇。一開始startIndex=1,所以可以正常fetch。如果此時user點了"下一頁",則會呼叫fetchOlderPosts。這裡面會把startIndex加上numPosts,假設numPosts=10,則此時startIndex=11。然後下一步User點了blog這個Label,所以fetchPosts(blog),這邊會由startIndex=11開始fetch。但是前面假設Label為blog的文章只有5篇,所以就fetch不到東西,所以這邊畫面上就還是維持在原本的資料的樣子。
這樣應該看得懂吧。
這邊在邏輯上應該是要改成,當user選擇了不同的Label的時候,將startIndex回復到預設值。
所以,下面我將對neochinese.js的內容做一點點小修改。
1.設定一個全域變數,紀錄上一次的Label。
這個加在檔案一開始全域變數的地方
var oldlabel ="";
2.在fetchPosts的時候,檢查Label如果跟先前的不一樣,就把startIndex設為1,並更新紀錄的Label值。
這個加在function fetchPosts(label)裡面的一開始。
if(label != oldlabel){
startIndex = 1;
oldlabel = label;
}
這樣就ok啦,把右邊的標籤雲亂玩弄一番,看起來頗正常的。
YA~hack成功。
07.08.24 後記
剛去看了原作者的blog,發現這一個問題,作者的blog是不會發生的。或者也許他之前就已經發現了也說不定。
原作者的作法是,多加一個fetchLatestPosts的function。這個function在我手上的neo.js裡面是有的,只是長得不太一樣。
作者現在用的fetchLatestPosts長得像下面這樣。
function fetchLatestPosts(label) {
startIndex = 1;
fetchPosts(label);
}
然後將template裡面label的按鈕原本是call fetchPosts(label);改為call fetchLatestPosts(label);這樣一樣可以解決上面這個問題,不過大家要改兩個檔案就是了。
BTW,我稍早也想要做那個按下label除了改list之外,也把顯示的文章改成該label的最新一篇文章。不過隨便改一下會怪怪的。等我改出來再Post給大家參考吧。
5 Comments:
>_<
我看不懂-_-
(javascript文盲)
幫我改
http://nautica716.googlepages.com/myneochinese2.js
先謝謝你了
你要不要把你發現的這個bug回報給ramani??
你真的超強的,之前我是有把我的effect玩壞....但沒想到你可以找出原因來...
台灣的Neo就靠你了~
話說你的neo怎麼沒有permalink?你把它刪了嗎??
阿...我可以幫你改,但是沒辦法測耶。XD
上面的步驟1放在你的第18行,就是一串var的最後面。
步驟2放在235行,就是 labeltitle.innerHTML = ....的後面。
這樣應該就可以了吧,我放在這邊,萬一不work再跟我說好了。
我也想說要來回報,不過還得找時間用英文重寫一下。
permalink,那天在改排版的時候,覺得他不乖,所以就先把他砍掉了。後來沒改好就忘了再放上去。^^;
^_^ 謝啦...
等你怨念來的時候看可不可以把"本文標籤"也改出來...
我有改template的
但不會改neo.js的
理論上應該是可以fetch到該文的label吧...
可是我依樣畫葫蘆加上 + label + 時他到是完全不理我...
應該是前面的var什麼的有關吧我猜...
json javascript我全都不懂啦>_<
http://blurkerlab.blogspot.com
http://allen080.blogspot.com/
再加上你...就變成Neo鐵三角哩
對了
ramani的label很酷
只要按了label
文章也會跟著換
你知道他是怎麼用的嗎??
http://hackosphere.blogspot.com/
你按看看他上面的label
UpdatePost這個弄出來了,參考這裡。
另外那個js產生的'本文標籤'功能,我之前就有想要做了,但是因為我不太會html的語法,而且也不知道文章的label要去哪邊弄出來,所以不知道怎麼寫。不過如果有參考的code的話要移植應該就沒問題啦。再看看吧。
Post a Comment