もう少し対応日付フォーマットを増やしてみた
あまりテストしてないけど…
対応したかもしれない日付フォーマット
yyyy mm dd系
2006/11/30
2006年11月30日
2006-11-30
mm dd yyyy系
木曜日, 11月 30,2006
11/30/2006
11.30.2006
11月 30,2006
dd mm yy系
30.11.06
dd mm yyyy系
30 11月 2006
30 11月,2006
yy mm dd系
06/11/30
以下未対応
yyyymmdd系
20061130
曜日だけ系
木曜日
西暦無し系
木曜日, 11月 30
yyyymmdd系もそのうち対応できるかも
あとちょっと気づいた点
http://jikkenshitsu.blogspot.com/search?updated-max=2006-09-02T23%3A59%3A59%2B09%3A00&max-results=5
とかの
2006-09-02の部分なんだけど
yyyy-mm-ddだけじゃなく
yyyy-m-dとかでもいいみたい
つまり月と日は0とか付けてわざわざ2桁にする必要がなく
2006-9-2でOKっぽい
yyyy-mm-d
yyyy-m-ddもあり。
木曜日, 11月 30, 2006
カレンダースクリプトの対応日付フォーマットをもう少し増やしてみる実験
カレンダースクリプトの対応日付フォーマットを増やしてみる実験
対応したかもしれない日付フォーマット
yyyy mm dd系
2006/11/30
2006年11月30日
2006-11-30
mm dd yyyy系
木曜日, 11月 30,2006
11/30/2006
11.30.2006
11月 30,2006
以下未対応
dd mm yy系
30.11.06
dd mm yyyy系
30 11月 2006
30 11月,2006
yy mm dd系
06/11/30
yyyymmdd系
20061130
曜日だけ系
木曜日
西暦無し系
木曜日, 11月 30
たぶん
dd mm yyyy系の日付フォーマットだと
mm dd yyyy系と勘違いしておかしくなる予感
でも、日本人で
日、月、西暦の順番で表示される日付を使ってる人っているのかな?
水曜日, 11月 29, 2006
カレンダースクリプトの処理の順番を変えてみる実験
なんとなく表示が速くなったような気がするようにしてみた
気がするだけで実は早くなってません><
カレンダーだけ最初に作ってリンクの部分を後から作るようにしただけだったり…
逆に時間をかけてリンクの部分にエフェクトかけるのも面白いかも
http://tirasi.no.ura.googlepages.com/koyomi.js
http://tirasi.no.ura.googlepages.com/koyomi.css
火曜日, 11月 28, 2006
カレンダーのスクリプトコードをUTF-8に変えてみる実験
カレンダースクリプトの文字エンコード変更で
Shift-JISに変えてたんだけどUTF-8に戻した。
カレンダーをWidget化してみる実験
のカレンダーWidgetもUTF-8にした。
日曜日, 11月 26, 2006
金曜日, 11月 24, 2006
検索スクリプトにJSONを使ってみる実験
またまたクリボウ氏のブログから
クリボウの Blogger Tips: Blogger beta が JSON に対応
どうやらブログエントリーをJSON形式で取得できるようになったらしい
なので検索スクリプトでrss(xml)を取得している所をJSONで取得するようにしてみた
パラメータでJSON-in-Scriptとcallbackを使うことによって
データを受け取ったとき関数を実行することができるらしい
ぶっちゃけ関数名でデータを囲ってるだけなんだけど
まあこれによってXMLHttpRequestを使わずにデータを取得できるようになった
もしかするとニンテンドーDSとかでも検索できるのか?
持って無いけどね><
http://tirasi.no.ura.googlepages.com/kensaku.js
火曜日, 11月 21, 2006
カレンダーをWidget化してみる実験
クリボウ氏のブログにWidgetの作り方(?)が載ってたのでカレンダーをWidget化してみた
クリボウの Blogger Tips: Blogger beta の Widget 追加ボタンの作り方
相変わらす日付の表示が
火曜日, 11月 21, 2006
みたいな設定じゃないと使えない><
スタイルシートはBloglendarのがそのまま使えるけど
自分でHEADに挿入しないとダメ…
金曜日, 11月 17, 2006
BloggerのFeedのcontent-type
XMLHttpRequestでresponseXMLを使って
xmlファイルを取得しようとすると
Firefoxでは取得できたのにIEでは取得できなかった
なぜ取得できないか結構悩んだけど
ここをみたら原因がわかった
ajax - Content-Type: 許容判定
Bloggerの各xmlのcontent-typeが
rssは
application/rss+xml
atomは
application/atom+xml
となっていて
IEではcontent-typeが
text/xml
か
application/xml
でないとresponseXMLを使って取得することができないらしい
あきらめてresponseTextを使おう…
木曜日, 11月 16, 2006
実体参照の変換方法
部分更新スクリプトのブログのtitleを設定するところで
GETしたレスポンスのタイトルが実体参照に変換されててそのまま
document.title
とかに入れちゃうと&#とか表示されてちょっと困った
いろいろ調べると
実体参照に変換するJavascriptサンプルとかはいっぱいあるのに
逆に展開する方のスクリプトがなかなか見つからなかった
最終的にこのサイトをみつけた
Hawk's Laboratory » prototype.js 1.4.0を読む:string.js
このサイトの中頃にある
escapeHTML: function() {
var div = document.createElement('div');
var text = document.createTextNode(this);
div.appendChild(text);
return div.innerHTML;
},
unescapeHTML: function() {
var div = document.createElement('div');
div.innerHTML = this.stripTags();
return div.childNodes[0] ? div.childNodes[0].nodeValue : '';
},
このスクリプトがなかなかいい感じ
prototypeのスクリプトなのかな?
innerHTML→TextNode→nodeValue
これで変換できるとは裏技みたいな感じです
ちょっとためになったのでメモっときます。
月曜日, 11月 13, 2006
日曜日, 11月 12, 2006
Operaで表示してみる実験
Operaをいれてみる機会があったのでちょっと表示してみた
ラベルのリンクがうまくいかないのと
カレンダーが最初に表示された月から動かない…
通信部分のスクリプト(general.js)を弄ってみた
うまく動いてる気がする。
ついでにFirefoxでも安定してきた
リンクをめっちゃクリックしてもエラーがでなくなった。
木曜日, 11月 09, 2006
水曜日, 11月 08, 2006
IEのherf文字化け追加実験
ラベルの名前がアルファベットに半角スペースとか入ってるとこないだの方法ではうまくいかなかった
UTF-8→URLエスケープ(元のURL)→unescape(hrefで取得したURL?)→escape=元のURL(うまくいかないことがある)
文字によってunescapeされる時とされない時があるのかな?
unescapeは1回でも2回でも結果は同じなので
最後のescapeをする前にunescapeすることにしてみた
UTF-8→URLエスケープ(元のURL)→unescape(ブラウザがしたりしなかったり?)→unescape(強制的にしてみる)→escape=元のURL
ちょっと気になったこと
テンプレートに追加したスクリプトは
設定のTemplateのPage ElementsとFonts and Colorsでも実行される件
Page Elementsが機能しなくなって焦った><
設定の時は追加したスクリプトは動かないようにした方がいいかも
スクリプトによるけどね。
次に気になったこと
記事に初めの所にアンカーが埋め込まれてるけど
このアンカーへのリンクってどこで使われてるんだろ?
ソース見ない限り知る術が無いような気がする…
も1つ
idがBlog1のタグの中にさらにidがBlog1のタグができることがある
特にOlder Postsとかでページを更新した時とか
火曜日, 11月 07, 2006
IEのhrefの文字化けによるリンク不具合の実験
部分更新スクリプトでラベルのリンクがうまく取得できなかったのでちょっと調べてみた
ラベルを日本語にするとURLに日本語が含まれることになるけど
ソースを見ると既に日本語の所はURLエンコードされてる
Firefoxだと問題はないけどIEだと問題が出るようだ
最初スクリプトが間違ってたのかと思ったけど
IE系ブラウザでスクリプトでリンクのhrefを取得するとこの時点で既に文字化けしてた
いろいろ検索してみたところこんなサイトを発見
alert window への日本語表示
具体的な対処方法が載ってなかったけど
なんとなくエンコード、デコードの順番の問題かなと思った
UTF-8の日本語をURLエンコードしてるとIEではそれを変な風にデコードしてしまうって事なのかな?
今IE系のブラウザのMaxthonを使ってるけど
Bloggerの日本語ラベルリンクを真ん中クリックで他のタブで開くと
URLの最後の方が文字化けしてうまくリンクを開けない
その辺と関係がありそうだ
そういえばwikipediaとかはてなダイアリーキーワードとかも中クリックの時はうまく開けなかった気がする
次に文字化けしたURLを
[ サンプル ] _ encoder / decorder(文字列の符号化・復号化)
でエンコードしてみた
そしたらソースにあったURLと同じになった
つまり
UTF-8→URLエスケープ(元のURL)→unescape(hrefで取得したURL?)→escape=元のURL
と戻すことができたのかな
escapeするだけだと今度はFirefoxで表示した時おかしくなるのでその辺はブラウザによって処理分けする必要があるかな
OperaとかSafariとかIE7じゃどうなるかわかんないけどね
とりあえずIE6とFirefoxだけみれればいいかな
IEの時だけescapeするようにしてみたら部分更新スクリプトがうまく動くようになった!
月曜日, 11月 06, 2006
日曜日, 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;
};
こんな風に自前で更新させ事後処理とか追加するのもいいかもしれない。
金曜日, 11月 03, 2006
ページの部分更新についての実験
ページの切り替えを調べてたら
ページのホストURL(?)に適当なパラメーターを追加してPOSTすると
ページの一部を書き換えるJavascriptが返ってくることがわかった
このページの記事の所を部分更新する場合
POST先は
http://jikkenshitsu.blogspot.com/
で
パラメーターは
action=nextposts
widgetId=Blog1
widgetType=Blog
responseType=js
path=http://jikkenshitsu.blogspot.com/search?updated-max=2006-10-30T21%3A52%3A00%2B09%3A00&max-results=5
みたいな感じで送ると良いみたい
これをXMLHTTPとかでPOSTして返ってきたresponseTextをevalで実行すればページの一部が書き換わるはず
これはなかなか面白いですね
パラメーターについてはこれからいろいろ試してみる必要ありです。
木曜日, 11月 02, 2006
カレンダーを改造してみる実験
bloglendarを改造してみた
表示する月はページの一番最初にある記事の月を表示するようにした
テンプレートにタグを埋め込むのをやめた
これは('A`)マンドクサイから
設定の日付を日本語のにした
っていうかこの辺を変えるにはスクリプト弄らないとだめだけど
デフォは"土曜日, 10月 28, 2006"みたいなやつ
ここからカレンダーの日付を作成する
これによってテンプレートにタグを埋め込む必要がない
なのでテンプレートによっては使えないかも
相変わらず汎用性がない…
カレンダーの日付からのリンクはアンカーではなく各日付の記事にリンク
この方が普通のブログのカレンダーっぽい気がする
設置メモ
HEAD内に
<link href='http://****/bloglendar.css' rel='stylesheet' type='text/css'/>
<script charset='Shift-JIS' src='http://****/bloglendar.js' type='text/javascript'/>
<script charset='Shift-JIS' src='http://****/bloglendar-main.js' type='text/javascript'/>
カレンダーを付けたい所に
<div id='bloglendar'><!-- Bloglendar here --></div>
だいたい予定通りの動作をするようになったかな
もう少し弄ってうまく動くかテストしないと
後ちゃんと綺麗にスクリプトを書かないとダメかな…