6

我正在开展一个项目,该项目(希望)涉及利用 Facebook 中已经内置的一些 javascript。但马上我就有了一个障碍,我不知道__d是什么。

如果您查看源 javascript 文件,几乎每个命令都以__d

例如:

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

但是我在任何 javascript 文件中都找不到__d实际执行的操作。不应该在某个地方为所有这些其他功能定义它来利用它吗?

更新:

所以假设有一个网站有一些像这样的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。我相信它使用依赖注入机制。这里有两个网址。

制作:http ://connect.facebook.net/en_US/all.js (混淆)

开发:http ://connect.facebook.net/en_US/all/debug.js (去混淆)

如果你检查 debug.js,你可以看到require, __d, __t更多。__d更像是来自 RequireJS ( 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 回答
3

该函数是用于定义模块的RequireJS__d的 API 。

例子:

__d('Example', [], function a(b, c, d, e, f, g, h) {
 'use strict';
  if (c.__markCompiled) c.__markCompiled();
  f.exports = {
      a: "Hello World"
      };
 }, null);

称呼:

require('Example');

输出:

  Object {a: "Hello World"}
于 2016-08-02T19:42:04.697 回答