JavaScript

はじめてのQuineリレー

概要 昨日、自分自身を出力するHaskellプログラムを生成するOCamlプログラムを生成するSchemeプログラムを生成するRubyプログラムを生成するJavaScriptプログラムを生成するCプログラムを書いた。 #include<stdio.h> int main(){char*g="var p=print;p('puts %%^(form</stdio.h>…

Firefox4でGM_xmlhttpRequestが動かない

クロスドメインどころか同ドメインでも動かなかった alertは入ってない (クロスドメインでも)リクエストは届いているみたいなんだけどonloadもonreadystatechangeもonerrorも無反応 いみふ (6/10追記) 再起動したら動いたり突然動かなくなったりしてますます…

espresso.elのswitch-caseのインデントの修正

http://e-arrows.sakura.ne.jp/2010/12/closure-library-on-js2-mode.htmlを参考に設定していたのだけど,これだとcaseの中身のインデントがうまくいかなかった. myapp.main = function() { var Fruit = some.namespace.Fruit; switch (fruit) { case Fruit…

Spidermonkey1.8 RC1をインストール

Macで普通にmake -f Makefile.refすると, cat: ../../dist/Darwin_DBG.OBJ/nspr/Version: No such file or directoryと言われてmakeに失敗する.NSPRというものに依存しているらしい.そこで,まずNSPRを入れる. cvs -q -d :pserver:anonymous@cvs-mirror.…

Greasemonkeyでエラーの行番号がずれる

FirefoxだとErrorオブジェクトのstackプロパティでスタックトーレス文字列が得られるが,Greasemonkey経由だと行番号が359ずれる.トップレベルでのスタックトレースを見ると何が起こっているのかなんとなく想像がつくが…Greasemonkeyのバージョンによってず…

Greasemonkeyで代入式を連ねると挙動が変わる

var a = window.wrappedJSObject.b = {}; var c = a.d = new function() {}; alert(c.constructor.prototype); // => undefined var a = window.wrappedJSObject.b = {}; var c = new function() {}; alert(c.constructor.prototype); // => [object Object]…

js2-mode(2)

js2.el内で (eval-when-compile (defvar font-lock-keywords nil)) されてるせいなのか,js2-modeだとfont-lock-keywordsがnilになってる.js2-modeのfont-lockの掛け方がよくわからなかったので,js2-mode-hookで無理矢理設定した. それから,js2-mode-hoo…

xpd

agehaさんがwikiを用意してくれました.感謝!xpd wiki 今後はこちらでリリースしていくことになります.

GreasemonkeyのunsafeWindow

Greasemonkeyのコンテキストでは,unsafeWindow=ページでのwindowオブジェクト,window=wrapされたwindowオブジェクト すなわち,window.wrappedJSObject == unsafeWindow unsafeWindow経由で外からGreasemonkeyのAPIを叩けるので,危ない ということなのか…

Spidermonkeyをインストール

ftp://ftp.mozilla.org/pub/js/js-1.7.0.tar.gzからダウンロード. tar zxvf js-1.7.0.tar.gz cd js/src/ make -f Makefile.ref sudo cp -i Darwin_DBG.OBJ/js /usr/local/bin/

Greasemonkeyがよくわからない

ブックマークレットがそのままじゃ動かなかった.documentオブジェクトがwrapされてる. documentをdocument.wrappedJSObjectに変えたら動いた. 参考:XPCNativeWrapper | MDN グローバルな名前空間が汚染されるってよく書いてあるけど,URL欄からじゃ見え…

js2-mode

Carbon Emacsに最初から入っているJavaScriptのモードがいろいろ酷かったので,評判の良さそうなjs2-modeを入れてみた. インデントや色付けも正確だし,リアルタイムに警告/エラーを表示してくれる.ただ.{を入れると改行と}を入れてくれたり,(や[でも閉…

構築ツール(9)

ver0.5.0 アイテム不所持にできないバグを修正.新規保存機能を実装.

構築ツール(8)

koniさんから例外処理してないとのご指摘.その通りです.完成度上がってきたとか大嘘もいいとこですね.なんか微妙に配っちゃってるけど,使ってもらうからには開発中であることをちゃんと説明しないとなぁ.まぁ基本的な機能は実装できたし,そろそろ例外…

めざパタイプ表示ブックマークレット

javascript:(function(){c=document.getElementsByTagName("input")[1].value.split("_");for(i=0;i<6;i++){for(j=3;j<7;j++){g=document.getElementsByTagName("tr")[i+1].getElementsByTagName("td")[j];g.innerHTML=g.innerHTML.replace("めざめるパワ−",…

構築ツール(7)

努力値に対応.めざパタイプは検討中. 並び替え機能は,チェックボックスのonchangeを使うとうまくいくかもしれない. なんかどんどん列が増えていくなぁ.まぁそもそも,元あるやつを改造してやろうとするからおかしいんだよね.

構築ツール(6)

性別自動判定を実装. PDに正しいHPの値をセットするのを書き忘れてて100固定になってたのを修正.種族が変えられるのに努力値変えられないのは微妙すぎることに気付いたので,次は努力値.インターフェースは考え中だけど,やっぱり箱を五つ並べてしまうの…

構築ツール(5)

種族変更,保存まで実装した.ただ,ソースが長過ぎてIEでは動かないと思う.caminoでは動いた.

構築ツール(4)

努力値やポイントアップの回数は,クッキーからとってこないといけなさそうなので,今日はクッキーをパーズする関数を書いた. これで 種族名をテキストボックスにする(koniさん作) ボタンの改造 クッキーのパーズ までできた.まだ表面的なとこばっかりだな…

構築ツール(3)

上書保存ボタンのvalueを"保存"にしたら,PDの値がクッキーにセットされた.

構築ツール(2)

種族変更 性別とめざパタイプ表示 努力値(全63 or 攻撃0 or 詳細設定) 並び替えボタン ポケデックスへのリンク

構築ツール

ブックマークレットでやるとなると,文字数制限が厄介.外部スクリプトを読ませるには場所が必要だし.と思ってたんだけど,ブックマークレットでなくてフレーム使えばやりたい放題な気がしてきた.フレームきもいって話もあるけど,じゃあ他にいい方法ある…

関数オブジェクトとMethod/UnboundMethodオブジェクト

foo = new Object(); foo.hoge = function () {print(this)}; fuga = foo.hoge piyo = function () {foo.hoge()}; fuga.call(foo) piyo() このfugaとpiyoは違うんだよね.JavaScript的には当然なんだろうけど.ただの関数オブジェクトだから. どっちかとい…

Schemeのletのようなこと

withとオブジェクトリテラルを使うと,Schemeのletのようなことができると知った. var hoge = 1; with ({hoge: 2}) { print(hoge); // 2 } print(hoge); // 1 これは便利そう.でも2種類の括弧が入り交じっててちょっと複雑だなぁ.JavaScript1.7にはletが…

めざパのタイプを表示

javascript:(function(){q=document;f=q.getElementsByTagName;d=["格","飛","毒","地","岩","虫","霊","鋼","炎","水","草","電","超","氷","竜","悪"];c=f.call(q,"input").item(1).value.split("_");for(i=0;i<6;i++){h=f.call(q,"tr").item(i+1);h.inner…