在Chrome中查找JavaScript函数定义

Rya*_*Val 267 javascript google-chrome-devtools

Chrome的开发者工具摇滚,但他们似乎没有(我能找到的)一种方法是找到JavaScript函数的定义.这对我来说非常方便,因为我正在开发一个包含许多外部JS文件的站点.当然grep解决了这个问题,但在浏览器中会好得多.我的意思是,浏览器必须知道这一点,为什么不公开呢?我的期望是这样的:

  • 从页面中选择"检查元素",突出显示"元素"选项卡中的行
  • 右键单击该行并选择"转到功能定义"
  • 正确的脚本在"脚本"选项卡中加载,并跳转到函数定义

首先,这个功能是否存在,我只是错过了它?

如果没有,我猜这将来自WebKit,但找不到任何针对Developer Tool功能请求WebKit的Bugzilla.

ple*_*siv 353

让我们说我们正在寻找名为的函数foo:

  1. (打开Chrome开发工具),
  2. Windows:ctrl+ shift+ F或macOS: cmd+ optn+ F.这将打开一个用于搜索所有脚本的窗口.
  3. 选中"正则表达式"复选框,
  4. 搜索foo\s*=\s*function(搜索foo = function这三个令牌之间的任意数量的空格),
  5. 按下返回的结果.

对于函数定义另一种变型是function\s*foo\s*\(用于function foo(与任意数量的那些三个令牌之间的空间.

  • OSX上的cmd +选项+ F. (22认同)
  • 现在这就是我在说什么!我不知道这个窗格是否存在 - 你怎么样? (7认同)
  • 然后你找不到函数声明,动态生成的函数表达式和匿名(未命名)函数.我更想要像Firefox这样的东西:点击监视面板中的功能参考 - >跳转到功能参考. (6认同)
  • 答案似乎已经过时,如果我在开发人员控制台中单击该组合键,则什么也不会发生。 (3认同)
  • 这只是定义名为**`foo`**的函数的一种方法.还有其他人.如果我们的功能是例如`bar ['foo']`怎么办?(就我所知,这个问题没有一个好的答案 - 它基本上是"不要写错综复杂的代码") (2认同)

Dmi*_*ich 72

在2012-08-26登陆Chrome浏览器 不确定确切版本,我在Chrome 24中注意到了它.

屏幕截图价值一百万字:在此输入图像描述

我正在使用Console中的方法检查对象.单击"显示函数定义"将我带到源代码中定义函数的位置.或者我可以将鼠标悬停在function () {单词上以查看工具提示中的函数体.你可以像这样轻松检查整个原型链!CDT绝对摇滚!!!

希望大家都觉得有用!

  • 我想你可以做`dir(myFunc)` (13认同)
  • 是否有允许通过函数引用进行搜索的快捷方式或函数?像“>检查(document.body)”。现在我必须 d > tmp={a:myFunc}; >tmp,后跟“显示函数定义” (2认同)
  • 奇怪的是,单击“显示函数定义”对我没有任何作用。无反应。 (2认同)

joa*_*oar 44

您可以通过在控制台中评估它的名称来打印该功能,就像这样

> unknownFunc
function unknownFunc(unknown) {
    alert('unknown seems to be ' + unknown);
}
Run Code Online (Sandbox Code Playgroud)

这不适用于内置函数,它们只会显示[native code]而不是源代码.

编辑:这意味着该函数已在当前范围内定义.


art*_*.sw 30

2016年更新:Chrome版本51.0.2704.103

有一个Go to member快捷方式(列在settings > shortcut > Text Editor)中.打开包含您的功能的文件(在sourcesDevTools 的面板中),然后按:

ctrl+ shift+O

或在OS X中:

+ shift+O

这样可以列出并覆盖当前文件的成员.

  • 好吧,这似乎所做的并不是“转到任意函数调用的定义”,而是“显示当前文件中的所有函数名称并让您转到它们”——这也很有用。 (2认同)
  • @Black 只是为了确保: 1. 在开发工具的源面板中,将焦点(单击)放在要查找函数的源文件上。2. 是字母“O”,而不是数字“0”。 (2认同)
  • @Protectorone,是的 (2认同)

Răz*_*nda 17

导航到函数定义位置的另一种方法是在调试器中断,您可以访问该函数并在控制台中输入函数完全限定名称.这将在控制台中打印函数定义,并提供一个链接,在单击时打开定义函数的脚本位置.


小智 15

不同浏览器的做法不同.

  1. 首先打开控制台窗口,右键单击页面并选择"Inspect Element",或点击F12.

  2. 在控制台中,键入...


Igo*_*sky 6

在 Chrome 控制台中:

debug(MyFunction)
MyFunction()
Run Code Online (Sandbox Code Playgroud)


Chr*_*son 5

我发现定位全局函数的最快方法很简单:

  1. 选择来源选项卡。
  2. Watch窗格中单击+并键入window
  3. 您的全局函数引用首先按字母顺序列出。
  4. 右键单击您感兴趣的函数。
  5. 在弹出菜单中选择Show function definition
  6. 源代码窗格切换到该函数定义。