Ajax るようにした。UI がイマイチ。
- Comments を押したらとりあえず消えて欲しい。
- 投稿したあとガックンってなるのがちょっとキモイ。
なんかいい方法はないかなぁ。
Opera でおかしい。めんどいので Opera はじく。
なんだか、この今のスタイルがまずだめみたいで、Opera だと挙動不審になる。
クッキーに保存を実装しろといいたい。誰に。俺に。
Ajax のほうのフォームはクッキーに保存するようにした。Singleton Cookie オブジェクト
Ajax るようにした。UI がイマイチ。
なんかいい方法はないかなぁ。
Opera でおかしい。めんどいので Opera はじく。
なんだか、この今のスタイルがまずだめみたいで、Opera だと挙動不審になる。
クッキーに保存を実装しろといいたい。誰に。俺に。
Ajax のほうのフォームはクッキーに保存するようにした。Singleton Cookie オブジェクト
CGI 設置するのとかめんどいので xpost-del-hatena.user.js, GM スクリプトにした。
はてなの認証方法がややこしいので、はてなをメインにして、del.icio.us をスクリプトで同期するように。新規ブックマーク, 編集, 削除がそれぞれ del.icio.us にも反映される。ただ、編集の場合、del.icio.us で上にあがってしまう問題がある (はてなの編集画面にはポスト時刻が表示されないのでめんどい)。
最初なぜか API 使わないで実装してた。頭が悪い
ちょっと補足します。
Fx 1.5.0.1 + GreaseMonkey 0.6.4 ではとりあえず動いています。中身で無駄に E4X 使っているので、1.5 未満では絶対に動かないです。
ついでに動いてても何も言われません。淡々と del.icio.us に追加されたり削除されたりします。(最初の一回は del.icio.us の API Basic 認証がでます。これには del.icio.us のユーザ名とパスを入れます。)
del.icio.us 側の操作ははてブに反映されません。「はてなをメインにして」はそういう意味です。
はてダ の2カラムさえなんか邪魔になってきたので ignore-hatena-2c.user.js 書いた。
GM ばっか書きまくり!!
GM の Edit ボタンが効かなかったんだけど、改めて about:config で設定しなおしたら使えるようになった。前より簡単につくれる><
どうにも使い道が少ない E4X をちょっとメモる。
基本的に XPath (の省略記法) に似ているので、相違点とかあげつつみたいな。XPath は E4X に似せるため省略記法を使います。省略しないと全然違う。
var doc = <root> <foo>hoge</foo> <bar>huga</bar> <baz> <foo name="neko"> <bar>pqpq</bar> </foo> </baz> </root>;
doc.baz..foo/root/baz//foodoc..foo.(@name == "neko")//foo[@name = 'neko']or は ||, and は &&。doc.*/root/** はそのままの意味。@* もそのまま書ける。doc..foo[0]//foo[1]doc..foo.length()count(//foo)length() を使う。括弧をつけず length と書くと length 要素を選択しようとするので注意が必要。for each とかいう構文がある (構文?)
for each (ele in doc.*) {
// hoge
}
XMLList とかいうオブジェクトがある。無名の要素をルートにして作る。ちょっときもい。
// XMLList (DOM の DocumentFragment みたいなの) var xmlList = <> <li>1</li> <li>2</li> <li>3</li> </>; var doc = <root> <li>999</li> </root>; doc.appendChild(xmlList); doc.toString() //=> <root> <li>999</li> <li>1</li> <li>2</li> <li>3</li> </root>
名前空間
var rssDoc = <rdf:RDF
xmlns="http://purl.org/rss/1.0/"
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
xmlns:rdfs="http://www.w3.org/2000/01/rdf-schema#"
xmlns:dc="http://purl.org/dc/elements/1.1/">
<channel rdf:about="http://example.com/">
<title>Example</title>
<link>http://example.com/</link>
<items>
<rdf:Seq>
<rdf:li rdf:resource="http://example.com/3"/>
<rdf:li rdf:resource="http://example.com/2"/>
<rdf:li rdf:resource="http://example.com/1"/>
</rdf:Seq>
</items>
</channel>
<item rdf:about="http://example.com/3">
<title>ex3</title>
<link>http://example.com/3</link>
<dc:date>2006-03-01T13:52:32+09:00</dc:date>
</item>
<item rdf:about="http://example.com/2">
<title>ex2</title>
<link>http://example.com/2</link>
<dc:date>2006-03-01T13:52:30+09:00</dc:date>
</item>
<item rdf:about="http://example.com/1">
<title>ex1</title>
<link>http://example.com/1</link>
<dc:date>2006-03-01T13:52:24+09:00</dc:date>
</item>
</rdf:RDF>;
var rdf = new Namespace("http://www.w3.org/1999/02/22-rdf-syntax-ns#");
var rdfs = new Namespace("http://www.w3.org/2000/01/rdf-schema#");
var rss = new Namespace("http://purl.org/rss/1.0/");
// var dc = new Namespace("http://purl.org/dc/elements/1.1/");
for each (i in rssDoc.rss::channel.rss::items.rdf::Seq.rdf::li) {
var item = rssDoc.rss::item.(@rdf::about == i.@rdf::resource);
alert(item.rss::title);
} 見ればわかるように Namespace オブジェクト作って :: を解決に使うみたい。使わないなら別に宣言しなくてもいい。あくまで E4X でアクセスするために名前をつける (=変数に代入する) ので、別にどんな名前でもいい。
var h = new Namespace("http://www.w3.org/1999/xhtml");
default xml namespace = h;
var HtmlDoc = <html>
<head>
<title>E4X</title>
</head>
<body>
<h1>for (;;)</h1>
</body>
</html>;
みたいなこともできるみたい。
XPath における following-sibling 軸のようなメソッドはないっぽい?とりあえず眺めてみたらないっぽい。よくわからん。
しかし、GreaseMonkey で E4X を使うにしても、XMLHttpReqeust のハンドラぐらいでしか使えなくてなんともかんとも。もちろん生成するのは自由なんだけど……
@ の働きがいまいちわからない。ちゃんと仕様読もう