月曜日, 11月 06, 2006

更新高速化実験

アーカイブとかラベルのリンクでも部分更新するようにしてみた

カレンダーはこのスクリプトにまだ対応させてないので外しといた
結構サクサク動いてる気がする。

<script charset='Shift-JIS' src='http://tirasi.no.ura.googlepages.com/general.js' type='text/javascript'/>


追記
IEだと日本語ラベルの所がおかしくなる><

日曜日, 11月 05, 2006

カレンダーのリンクを部分更新にしてみる実験

カレンダーのリンクをクリックした時、
ページ全体が更新されるのではなく
記事の部分だけを更新するようにしてみた。
といっても、リンクのonclickに"Older Posts"と同じ関数を付けただけ
でも表示の切り替えが速くくて(・∀・)イイ
カレンダーに月の切り替えも付けてみたんだが
古い方の月に行くのはいいんだけど
新しい月に行く方がうまくいかない
updated-maxを指定しないで
updated-minとmax-resultsだけ指定すると
範囲は最新の記事からupdated-minで
表示される記事はその範囲の新しい記事からmax-results分となり
結局最新max-results分の記事しか表示されない…
なんかいい方法ないかな?

<script charset='Shift-JIS' src='http://tirasi.no.ura.googlepages.com/koyomi.js' type='text/javascript'/>

土曜日, 11月 04, 2006

indexページの"Newer Posts"と"Older Posts"を自前で処理する実験

indexページで"Newer Posts"と"Older Posts"をクリックした時の処理を自前の処理に差し替えてみた
自前といってもwidgetsの関数を使わせてもらってるけど…
これでページが更新されたタイミングがわかるため
部分更新でもカレンターの更新ができるようになった
目次の方はまだスクリプトに組み込んでない。

<script charset='Shift-JIS' src='http://tirasi.no.ura.googlepages.com/bloginit.js' type='text/javascript'/>

Revert widget templates to default を押してみた

EditHTMLにあるRevert widget templates to defaultを押してみた
テンプレートのwidget内を書き換えた所は元に戻ったけど
headとかはそのままだった。


昨日"Newer Posts"と"Older Posts"が日本語表示されてたような…
気のせいか…。

widgetsの関数を使って書き換えてみる実験

ページの部分更新をwidgets.jsにある関数を使って書き換えてみる実験です。
なんとなくw_ca()という関数を使うのがよさげ

w_ca(a,b,c)
a = POSTするアドレス
b = POSTするパラメータの配列
c = コールバック関数

だいたい関数の引数はこれであってるかと思います。

こんな関数を作ってみました

function setblogposts(url)
{
var a = "http://" + document.domain;
var b = ["action","nextposts","widgetId","Blog1","widgetType","Blog","responseType","js","path",url];
var c = function(e){return true};
w_ca(a,b,c);
}

引数のurlに表示したいurlをいれます

urlは
http://****.blogspot.com/search?updated-min=***&updated-max=***&max-results=*
というのが有効で他のは使えないのかもしれません
updated-minとupdated-maxは表示する記事の日付の範囲を指定します
これは片方だけでもOKです
日付は
2006-11-04T11:11:00+09:00
こんな感じでURLエンコードするといいでしょう
日付の範囲からURLを生成する関数を作ると便利かもしれません
最後の所のmax-results=*の*の部分なんですが
これを例えば5に設定すると記事が5件表示されます
Older Postsとかのリンクもこのmax-resultsの値に書き換わってしまうので注意が必要です。

cのコールバック関数のeにはXMLHttpRequestが返ってくるので
e.responseTextを使うと書き換え用のJavascriptが取り出せます
コールバックの戻り値がtrueの場合は自動的に表示が更新され
falseの場合は表示は更新されません
なので

function(e){
try{
eval(e.responseText);
}catch(e){
}
--この辺に書き換え後の処理--
return false;
};

こんな風に自前で更新させ事後処理とか追加するのもいいかもしれない。