找不到javascript函数调用的来源

时间:2012-12-24 01:30:35

标签: javascript debugging

好的,所以我需要在网站上找到特定javascript函数的源代码。 (具体细节并不重要,除非没有办法做我要求的事情)

我可以在html代码的链接中看到函数调用     的onclick = “inbox.sendMessage();”

我知道该函数确实有效,因为如果我使用插件可以调用该页面上的函数,但是,我搜索了该页面中引用的每个.js文件,并且它们都没有包含名为sendMessage的函数。

我要问的是,有没有办法让代码回到源代码,也许有一种方法可以调试html并在触发onclick时中断,然后进入函数查看源代码,但我不知道我怎么能这样做,或者甚至可能。任何帮助将不胜感激,谢谢。

4 个答案:

答案 0 :(得分:4)

我想你可以这样做:

inbox.sendMessage

在Web控制台中。 (没有括号的函数名称) 它将打印出函数的源代码。

答案 1 :(得分:2)

我通常使用Opera,至少这就是我所做的:

  1. 打开Opera Dragonfly(Ctrl + Shift + I)。
  2. 点击带有onclick处理程序的HTML标记。
  3. 转到右侧栏中的“侦听器”标签。
  4. 查看click事件的监听器。它会显示文件和行号。

答案 2 :(得分:2)

sendMessage可以声明为:

var inbox{
  sendMesssage:function(){
  }
}

//or

function inbox(){
  this.sendMessage=function(){
  }
}

// or

inbox.sendMessage=function(){}

// or ...

所以寻找“sendMessage(”或“function sendMessage”将找不到任何东西。

在chrome,Internet Explorer和Firefox(使用firebug)中,您可以点击F12并进入调试,在那里您可以检查已加载的脚本,因为可能已经动态加载了脚本。

答案 3 :(得分:0)

#!/usr/bin/env ruby


Dir::glob("*").each do |name| 

        lineCount = 1

        File.open(name, "r").each do |line|
            puts "\nFile name: " + name + "\nline: " + lineCount.to_s  if line =~ /inbox.sendMessage/  && name != "findfunction.rb"
            lineCount += 1
        end



end

写了一个快速的ruby脚本来帮助你。要执行,首先要确保您的计算机上有一个ruby解释器,然后将脚本放在包含所有相关文件的目录中。加载命令行终端,导航到所述目录并键入“ruby findfunction.rb”。

它将告诉您“inbox.sendMessage”的所有实例(文件+行号)。