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//foo
doc..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 のハンドラぐらいでしか使えなくてなんともかんとも。もちろん生成するのは自由なんだけど……
@
の働きがいまいちわからない。ちゃんと仕様読もう