16th
足がやわらかそうに見えないー。
少しずつパラメーターが増えているので組み立て方をまとめ。
スキップするURLの正規表現を指定します。()でグルーピングするとreplace_urlで後方参照を利用出来ます。
ページのa要素、input、button要素を始めとするクリックイベントを付加された要素をXPathで指定します。指定された要素を自動的にクリック(クリックイベントをトリガー)して遷移します。
httpまたはhttpsで始まるURLを指定します。ページの内容はチェックせず、URLのみで遷移します。urlで指定した後方参照を利用することが出来ます。
リダイレクトページのサイトのURLを指定します。Chrome拡張で対応ページのリストを作る際のリンクなどに利用されます。
指定が間違っていたり既に古くなっていて動かない、調査が必要な定義に対して1を設定するとその定義は利用されなくなります。誰かが原因を調べます(たぶん)。サイトの構造が変わるなどして、もはや対応出来ないことが確認された場合、定義は消去されます。
機能的にはGreasemonkey版と全く同じです。ソースはGitHubに置きました。
クロスドメイン越えるためと、キャッシュを保持するために拡張にしました。
きれいに分けて書けた:)
iframe.contentWindow.document.bodyとかするとブラクラiframe内に書き込む処理が非同期だと上手く行かないようなので、とりあえず確実に取得することは保証しないことにした><
var doc = iframe.contentWindow.document;
doc.open();
doc.write('foo');
doc.close();
VMWare Fusion 3の共有フォルダのショートカットは消しても再起動すると復活する。デスクトップに何も置きたくないので設定で無効にした。
hgfs.linkRootShare = "TRUE"を検索。hgfs.linkRootShare = "FALSE"に書き換えて保存再び起動すればもう作られなくなっているはず。
最新版のQUnitがCommonJSのAPI(初耳!)に対応したようなので、バンドルも合わせて変更しました。
名前が変更されたメソッド(旧名はエイリアスとして残る):
equals → equal
same → deepEqual (===比較はstrictEqualへ)追加されたメソッド:
notEqualnotDeepEqualstrictEqualnotStrictEqualバンドルでも一応equals、sameを残しました。非推奨のコメント付き。否定系のメソッドが入って分かりやすくなった気がしますね。
試しに書いてみた。
BathyScapheのスレで選択した文字列をTumblrのブックマークレットに送ります。3ペインモード(ブラウザを垂直方向に分割)で実行すると止まります。BathyScapheの仕様で情報が取れないっぽい。~/Library/Application Support/BathyScaphe/Scriptsに入れると動きます。
Gist色付かねー。
AppleScriptはスコープの扱いが変わってるのかな。作法が謎だけど少し分かって楽しくなった。
iviewのSITEINFOにage2を追加した。
iviewではSITEINFOで指定するimageSourceとimageSourceForReblogのURLがリダイレクトする場合、上手く画像を取得出来ないので注意。「302 found」のように表示される。今回はURLがページから組み立てられたのでconcatで合成したけど、ランダムだったりする場合は困りそうだ。
この記事のiviewのバージョンは1.1.3.0.20090714です。
全部で判別は出来なそうだけど、最後のパラメータに関してはargumentsを使うと判定出来るようだ。
var foo = function(arg) {
console.log(
typeof arg == 'undefined',
arguments.length
);
};
foo(); // true, 0
foo(undefined) // true, 1
明示的にundefinedを指定した場合はargumentsに入る。
jQueryっぽくゲッターとセッターを1つの関数に書く時、普通は削除フラグにnullを使う。
attr('a', 1);
attr('a'); // 1
attr('a', null);
attr('a') // undefined
みたいな。JSON.stringifyのようにundefinedで値を削除するものと組み合わせる場合、関数もそれに合わせてundefinedで削除したかったので調べました。
attr('a', { a: 'foo' });
attr('a').a; // "foo"
attr('a', { a: undefined });
attr('a').a; // undefined
attr('a', undefined);
attr('a'); // undefined