概要:関数リファレンスのソース行とファイルの決定 - Firebugはどのようにそれを行いますか?
パブリックなものだけのドキュメントコメントを解析するための関数定義の行番号を取得しようとしています。私は関数の名前を見つけることができるようになりました。もし私が望むなら、関数を実行することができますが、行番号情報を引き出す方法を見つけることはできません。注:これはドキュメント目的のためのものであり、クロスブラウザは必要ありません。
私はfirebugを知っていますが(これはどのように可能か分かりません)、マウスオーバーで参照されている関数の行番号とスクリプトの場所を示しています。私は放火犯ソースから見て、限り、彼らは(domPanel.js:536
)を呼び出す見つけるようだが、そのソースのどこにでもこの「addMember」機能を見つけることができないよう:
this.addMember(object, "userFunction", userFuncs, name, val, level, 0, context);
それは、これはちょうどにISNいる可能性があり」可能と判断する。私の後退は[userfunction].name
と[userfunction].toSource()
を使っていて、ソースをソースにマッチさせようとしています。しかし、私は名前が一意ではない可能性があり、toSource()がソースの後処理を提供するので、これらを避けたいと思います。たぶん、火かき棒のAPIに結びつける方法がありますか?
最小限の説明コード:
[目標は、この情報を取得することです注意:window.MyWindowObject.PublicFunction: script.js line 3
]
script.js
(function() {
function referencedFunction() {
///<summary>Sample XML Doc Comment</summary>
alert('well hello there!');
}
var publicObject = window.MyWindowObject || {};
publicObject.PublicFunction = referencedFunction;
window.MyWindowObject = publicObject;
}());
index.htmを
<!DOCTYPE html>
<html>
<script src="script.js"></script>
</html>
EDIT :検索でこれを見つけた人のために、後でここにいくつかの他の使い方があります私が見つけたulの関連情報:
Stacktrace.js:https://github.com/eriwen/javascript-stacktrace - 最終的な関数の位置を取得していないので、私は欲しいものではありません。
クロム(およびIE9):[userfunction].toString()
は、私がおそらく最終的に使用するコメントです(Firefoxではありません)。 。私はfirefoxの[userfunction]
.toSource()を使用するつもりだったが、これはブラウザ操作のソースのように見える。 firefoxの[userfunction]
.toString()はコードを保持しているように見えますが、コメントは削除されます
わからない、行番号と関数定義のために解析することが、私はFFのJavaScriptインタプリタに直接Firebugのフックを考えることができます - あなたが行うことができない何かを構築することなく、ブラウザの拡張機能。 – Flambino
@Flambinoは正しい:Firebugはブラウザプラグインなので、このようなものに特別なアクセス権を持っている。これを証明する必要がある場合は、Firebug Liteを参照してください。Firebug Liteは、ブラウザでJavascriptとして動作します。 JSデバッガ機能を持たないのは、プラグインからの特権なしでは実行できないためです。 – Spudley
@Spudleyを(FirebugのLiteのドキュメントは、実際にこれを明示的に述べている):私は、私はすでに放火犯のライトで見てきた私の質問で述べたとJavaScriptの限界を理解し、それでもこれを行うにはどのような方法があるかどうかを尋ねました。スタックトレースには、私が探している情報が含まれているブラウザがいくつかありますが、まだ解決策が見つかっていないので、例外を強制することを考えていました。 –