prototype.jsで特定要素を配列で取得する
//全ての画像要素
images = $$("img");
alert(images[0].src);
//id、classで絞込み
field = $$('div#loginForm .field input');
alert(field[0].value);
//全ての画像要素
images = $$("img");
alert(images[0].src);
//id、classで絞込み
field = $$('div#loginForm .field input');
alert(field[0].value);
TalkLineという自作マイクロブログにLDRからPostするためのGreasemonkeyScript
// ==UserScript==
// @name TalkLineForm
// @namespace http://yusukezzz.dyndns.org/
// @description TalkLine post form for Livedoor Reader
// @include http://reader.livedoor.com/*
// ==/UserScript==
(function(){
var w = (typeof unsafeWindow == 'undefined') ? window : unsafeWindow;
var description = 'TalkLine post form for Livedoor Reader';
$client = 'TalkLineForm for LDR';
w.myfunc = function(url, title){
$status = document.getElementById('status_' + url);
window.setTimeout(function(){
GM_xmlhttpRequest({
method: 'POST',
headers: {'Content-type': 'application/x-www-form-urlencoded'},
url: 'http://133.78.124.70/post/',
data: 'status=' + encodeURIComponent($status.value) + '&title=' + encodeURIComponent(title) + '&url=' + encodeURIComponent(url) + '&client=' + $client,
onload: function(responseDetails) {
if(responseDetails.responseText != 'success') alert('Failed');
else $status.value = '';
}
});
}, 0);
}
w.entry_widgets.add('talkline_form', function(feed, item){
var url = item.link.replace(/#/g,'%23');
var title = item.title
return [
'<img src="http://133.78.124.70/favicon.ico">',
'<input type="text" id="status_', url ,'" value=""/>',
'<input type="submit" id="btn_', url ,'" value="post" onclick="myfunc(\'', url,'\',\'', title ,'\')"/>',
].join('');
}, description);
})();
LDRで用意されてるくっつける用のメソッドでinputを用意し、GM_xmlhttpRequestでpostしています
GM_xmlhttpRequestでPOSTメソッドを使うには
headers: {‘Content-type’: ‘application/x-www-form-urlencoded’}
が必要です
また、Railsならば受け取るアクションでXSS対策のトークンチェックを無効化、又は対応させる必要があります
(この辺のセキュリティ対策は正直良く分かってません)
GM_xmlhttpRequestをwindow.setTimeoutでラップしてあるのはセキュリティ上の配慮のようです
詳細は良く分かりません><
キーボードショートカットや投稿されてるpostを表示させたり、まだまだ弄る余地はいくらでもありますが、
とりあえずこれでLDRからPost出来るようになったので、後はLDRだけに留まらず、通常サイトからのpost&twitterへのクロスポストに対応させたいと思います
LivedoorReaderに何かくっつけてXML HTTP Requestしたくなった
最速インターフェース研究会 :: livedoor Readerに何かくっつけるGreasemonkeyの書き方
いまさらだけどGM_logの使い方。console.logも使えるようになった! – Cherenkovの暗中模索にっき
GM_xmlhttpRequest [Dive Into Greasemonkey]
LDR/Fastladderで各記事を表示時に動的にアレコレする方法 – by edvakf in hatena
0.7.20080121.0 compatibility – GreaseSpot
この辺見てLivedoorReaderのページからGM_xmlhttpRequestするところまでは出来た
後はサーバでそれを受け取って処理すれば初期の構想は実現出来そうだ
今度しっかりまとめたい
ResourceCompressorをAjax化すべく奮闘していました
# ディレクトリのファイル数を取得
Dir.glob('path/to/files/*.{js,css}').length
# ファイルサイズ取得
File::stat(file).size # int
File::stat(file).size.to_s # string
# パスからファイル名取得
File.basename(path, ignore_ext)
// 正規表現 matches = str.match(regexp); // 置換 result = str.replace(regexp, newString);
色々はまって大変な時間を消費した…orz
Adobe Illustratorを使う必要性が出てきたのでまたMacを借りました
そして前も陥った問題として、「マウスジェスチャには右クリックを使う」という世界の常識?があります
Macのトラックパッドは右クリックでドラッグするのにControlキー+クリックしなければいけません
ドラッグ中このキーを押し続けるのは辛いものがあり、常用には耐えません
そこで、右クリックを他の操作で代用できないか?と考えました
たどり着いた結論はuserChrome.jsの使用です(userChrome.jsは以前にも取り上げてますね)
自分はCtrlキーを押しながらマウスカーソルを動かすことでマウスジェスチャとして認識するように設定しました
(Ctrlキーが使えなくなっても右クリック自体は2本指タップで出来るので)
使用したスクリプトはこちらのもの
SampleCodeのExtension replacementsのところにあります
改変したのは以下の通り
//mousedown、mouseupをkeydown、keyupに 28. ["keydown", "mousemove", "keyup", ... //caseの条件もkeydownへ true(Ctrlキー押下)だったらジェスチャ開始 39. case "keydown": 40. if (aEvent.ctrlKey == true) //keyupにcase条件変更 52. case "keyup":
保存してFirefox再起動
以上で完了