関数がどこから呼ばれているのか知りたいときによく使うコード
関数のどこかに埋めて置くだけ
try{(0)()}catch(e){alert(e.stack)}
結果はこんな感じ
("baa",1)@chrome://liberator/content/options.js:136 ("baa",(void 0))@chrome://liberator/content/options.js:105 ("=","baa",(void 0),false)@chrome://liberator/content/options.js:286 setAction([object Array])@chrome://liberator/content/options.js:515 ([object Array],false,-1,[object Object])@chrome://liberator/content/options.js:749 exec([object Array])@chrome://liberator/content/commands.js:171 ("test=baa",false,-1,[object Object])@chrome://liberator/content/commands.js:185 ("set test=baa")@chrome://liberator/content/liberator.js:893 ("set test=baa")@chrome://liberator/content/ui.js:523 ("submit",512,"set test=baa")@chrome://liberator/content/liberator.js:638 onEvent([object KeyboardEvent])@chrome://liberator/content/ui.js:1300 ([object KeyboardEvent])@chrome://liberator/content/events.js:1596 ()@chrome://liberator/content/liberator.js -> vimp-plugin/trunk/asdfghjkl.js:53 ((function () next.apply(self, args)),[object Object])@chrome://liberator/content/liberator.js -> vimp-plugin/trunk/asdfghjkl.js:83 ([object KeyboardEvent])@chrome://liberator/content/liberator.js -> vimp-plugin/trunk/asdfghjkl.js:54 ([object KeyboardEvent])@chrome://liberator/content/events.js:615
もっと簡単なの
ブクマコメントにこんなんがあった。
こっちのほうが短くて良い。
alert(Error('comment').stack)
id:murky-satyr JavaScript, Firefox alert(Error('comment').stack) 2009/01/28
そういえば、(0)() でエラーを出していたのは何でだったんだろう。まぁいいか。
補足
自分は Firefox しか使わないので他のブラウザや処理系で動くかは知らない。
しかし、Vimperator の動かないブラウザはブラウザとは認められないので、全てのブラウザで動くと言っても良いだろう。