Home > JavaScript Archive
JavaScript Archive
AutoPagerize と FreeStyleWiki と diary_navi と
LDRize の FSWiki 用 siteinfo 書いたことだし、Autopagerize もいるよな、ってことで、diary_navi の改造と、このサイトの Autopagerize 用 siteinfo。一部のマニアックな方はどうぞ
,{
url: 'http://haro.jp/wiki/'
,nextLink: '//a[@rel="prev"]'
,pageElement: '//div[@class="day"]'
}
diary_navi は、a タグに「rel="prev"」「rel="next"」を追加しただけ。そのうち公開する
- Comments: 0
- TrackBacks: 0
LDRize と FreeStyleWiki
オフィシャルの siteinfo になかったので、でっちあげ。しばらくテスト的に使ってみる
,{
name: 'fswiki',
domain: '//div[@class="footer"]/a[contains(@href,"http://fswiki.")]',
paragraph: '//di[[contains(@class,"day")]//h2|//div[contains(@class,"day")]]/h3|//div[contains(@class,"day")]//h4',
}
ついでに、自分用 rep2 のも
,{
name: 'rep2',
domain: 'http://example.jp/rep2/*',
paragraph: '//t[[contains(@class,"tl")]|//dt[contains(@id,"r")]],
link: 'a',
view: 'a/text()',
height: 5
}
- Comments: 0
- TrackBacks: 0
今さらながら、Twitter Bookmarklet
今さら Twitter。いや、自分で使うツールが欲しかったので。なんか、まだ挙動があやしいんだけど、動いてはいるのでソース張っとく
マウスで選択した部分を投稿するのがメインの用途だ
参考にしたのは、いつも利用している「あとで読む」
javascript:(function(){
var U='Username';
var P='Password';
var S='';
if(document.selection)
S=document.selection.createRange().text;
else if(window.getSelection)
S=window.getSelection();
else if(document.getSelection)
S=document.getSelection();
var V = prompt('twit ?',S);
if(V==null || V=='' || V.length > 140)return;
var W=window.open('','','width=200,height=100');
var D=W.document;
D.title='now twitting';
var F=D.body.appendChild(D.createElement('form'));
F.setAttribute('method','POST');
F.setAttribute('action','http://'+U+':'+P+'@twitter.com/statuses/update.xml?status='+encodeURIComponent(V));
F.submit();
W.onunload=function(){W.close()}
})()
- Comments: 0
- TrackBacks: 0
setPreferenceJsonForKey 修正
setPreferenceForKey は、string しか保存できないっぽいので、でっちあげてたんだが、ちょっと変だったので修正した
- Comments: 0
- TrackBacks: 0
Dashboard Widget の設定ファイルのサイズは、メガ単位でも大丈夫っぽい
PrefJSON とかでっちあげたはいいが、そもそも大量のデータ放り込んで大丈夫? ってのが気になったので、write して read するだけの実験をしてみた
- サイズだけなら、10MB とかでも OK っぽい。上限わからず
- ただし、設定ファイルに遅延書き込みされてて、いつまでたっても終わらない
- この前買った MacBook (Mid 2007) だと、1MB くらいのデータでひと呼吸待つ感じ。これくらいが体感的な限界かな
テキストデータで 1MB っていうと、たいがいな量なので、通常利用時はあんまし心配しなくてよさげ
ちなみに、設定ファイルは ~/Library/Preferences/widget-hogehoge.plist に保存される
- Comments: 0
- TrackBacks: 0
setPreferenceForKey は、string しか保存できないっぽいので、でっちあげた
2007-10-02 追記: バグ持ちだったので修正
MacOSX の Dashboard 用 widet の設定値保存の際、
widget.setPreferenceForKey(string, key);
で、key の値として string を保存できるが、どうも hash とかそのまま保存できないっぽい。仕方ないので作った
// PrefJSON.js
if (window.widget) {
if ( typeof(PrefJSON) == 'undefined' ) PrefJSON = function() {};
PrefJSON.prototype.setPreferenceJsonForKey = function(hash, key) {
if ( hash == null ) {
widget.setPreferenceForKey(null, key);
}
else {
var array = new Array;
for ( var i in hash ) {
array.push("'"+i+"':'"+hash[i]+"'");
}
var str = '{'+array.join(',')+'}';
widget.setPreferenceForKey(str, key);
}
}
PrefJSON.prototype.preferenceJsonForKey = function(key) {
var d = widget.preferenceForKey(key);
var json = new Array;
if ( d && d.length > 0 )
json = eval(d);
return json;
}
}
使う方で
var hash = new Array;
hash = {hoge:'fuga', hige:'hage'};
pref.setPreferenceJsonForKey( hash, key );
var pref = new PrefJSON();
var json = pref.preferenceJsonForKey( key );
とかする
- Comments: 0
- TrackBacks: 0
Google Maps API 2
今さらながら、自作スクリプトを API 2 に変更。以下、変更した点。
- javascript の引数を v=1 から v=2 に変更
- GPoint(lng,lat) を GLatLng(lat,lng) に変更
- GMap を GMap2 に変更
- setMapType(hoge) していたのを、後述する setCenter に統合
- centerAndZoom を setCenter に変更
- 引数の zoom (0-17) が逆順になった
- 第三引数で MapType を渡す
他はともかく、zoom が逆順になったのが、ソースにコメントいれとかんと絶対忘れるな
- Comments: 0
- TrackBacks: 0
XMLHttpRequest でのアクセスを区別したい
バックエンドにあるシステムで、XMLHttpRequest の時と普通のWEBブラウザからアクセスした時とで画面まわりを切り替えたいなぁ、と思って今まで色々調べていたんだが、どうやらprototype.js だとリクエストヘッダで判別できるらしい。
ソースを見てみると、
var requestHeaders = ['X-Requested-With', 'XMLHttpRequest', 'X-Prototype-Version', Prototype.Version];
が該当部分っぽい。prototype.js だけの工夫なのかな? jkl-parsexml.js はそういう部分は見当たらず。そのうち他のライブラリも見てみよう。
- Comments: 0
- TrackBacks: 0
ちょっと勢いでを落としてプレビューする
上に書いたように xmlHttpRequest 投げるとすると、onkeyup で一文字毎に送信すると、結構壮大にリクエストし続けることになるので、ちょっとWait かまさんとまずいかもしれない。で、そのためにこんなことをしてみる。
<script language="javascript" type="text/javascript">
function countNum() {
var n = 1;
return function() {
return n++;
};
};
function updateHTML() {
if ( c() % 10 == 0 )
document.getElementById('out_html').innerHTML = document.getElementById('in_text').value;
};
var c = countNum();
</script>
<div id="out_html"></div>
<form action="post">
<textarea name="in_text" id="in_text" cols="80" rows="20" onkeyup="updateHTML();"></textarea>
</form>
これで 1/10 になった。。。というような単純なことを、努めて日記に書き残すようにしよう、と思った。
- Comments: 0
- TrackBacks: 0
すごい勢いでプレビューする
。。。とか大げさなことを書いてるが、もっとも単純と思われるサンプルを見てもらうのが一番かな
<script language="javascript" type="text/javascript">
function updateHTML() {
document.getElementById('out_html').innerHTML = document.getElementById('in_text').value;
};
</script>
<div id="out_html"></div>
<form action="post">
<textarea name="in_text" id="in_text" cols="80" rows="20" onkeyup="updateHTML();"></textarea>
</form>
まぁ、アプリケーションにするにはもっといろんなことをしないといけないわけだが、この例のように
HTML を入力→ブラウザで即レンダリング
ではなくて、
HikiDoc 書式で入力 → xmlHttpRequest → サーバで HTML に変換 → ブラウザに表示
とやれば使いやすくなるかなぁ、と。
- Comments: 0
- TrackBacks: 0
Home > JavaScript Archive