6

私は、(できれば) Facebook に既に組み込まれている JavaScript の一部を利用するプロジェクトに取り組んでいます。しかしすぐに、何が何で__dあるかわからないという障害があります。

ソースjavascriptファイルを見ると、ほとんどすべてのコマンドがで始まります__d

例えば:

__d("legacy:live-timer",["LiveTimer"],function(a,b,c,d){a.LiveTimer=b('LiveTimer');},3);

__dしかし、JavaScriptファイルのどこにも実際に何をしているのかわかりません。これらの他のすべての関数がそれを利用するには、どこかに定義する必要があるのではないでしょうか?

アップデート:

では、このような JavaScript を使用したサイトがあるとしましょう...

function alertSomething(var) {
    if (var) alert("Here it is: "+var);
}

if (some condition) alertSomething("something");

ここで、Chrome 拡張機能があり、独自の Javascript をページに挿入できたとしましょう。\私の Chrome 拡張 Javascript には、このようなものはありませんでした...

if (some other condition) alertSomething("something else");

したがって、すでにページにある JavaScript に存在するコードを利用することになりますか?

4

3 に答える 3

13

として、私は Facebook JavaScript SDK を調べました。依存性注入メカニズムを使用していると思います。ここに 2 つの URL があります。

製品: http://connect.facebook.net/en_US/all.js (難読化)

開発: http://connect.facebook.net/en_US/all/debug.js (難読化解除)

debug.js を確認するrequire, __d, __tと、さらに多くのことがわかります。__dRequireJS の定義関数に似ています ( http://requirejs.org/docs/api.html#define )

__d = function(/*string*/ id, /*array<string>*/ deps, factory,
      /*number?*/ _special) {/*TC*/__t([id,'string','id'],[deps,'array<string>','deps'],[_special,'number?','_special']);/*/TC*/
于 2013-02-27T21:25:16.807 に答える
4

__dの20 行目に の定義を見つけました1LWPxIBQ4v0.js。ファイルの名前が誰にとっても同じかどうかはわかりません。「 」を検索しますa.__d=function(s,t,u,v)(aはグローバル オブジェクトです。つまりwindow、効果的__dにグローバル関数を作成します)。しかし、その脱ミニフィケーションで頑張ってください...

于 2013-02-14T18:23:55.877 に答える