找不到javascript函数调用的源

找不到javascript函数调用的源,javascript,debugging,Javascript,Debugging,好的,我需要在网站上找到特定javascript函数的源代码。(除非无法实现我的要求,否则具体细节并不重要) 我可以在html代码链接中看到函数调用 onclick=“inbox.sendMessage();” 我知道该函数确实有效,因为如果我使用插件a,可以在该页面上调用该函数,但是,我搜索了该页面中引用的每个.js文件,其中没有一个包含名为sendMessage的函数 我想问的是,是否有一种方法可以跟踪代码回到源代码,也许有一种方法可以调试html并在触发onclick时中断,然后进入函数查

好的,我需要在网站上找到特定javascript函数的源代码。(除非无法实现我的要求,否则具体细节并不重要)

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

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


我想问的是,是否有一种方法可以跟踪代码回到源代码,也许有一种方法可以调试html并在触发onclick时中断,然后进入函数查看其源代码,但我不知道如何才能做到这一点,或者这是否可能。非常感谢您的帮助。

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

  • 打开Opera Dragonfly(
    Ctrl
    +
    Shift
    +
    I
  • onclick
    处理程序单击HTML标记
  • 转到右侧列中的“侦听器”选项卡
  • 查看
    单击事件的侦听器。它会显示文件和行号

  • 我想你可以做到:

    inbox.sendMessage
    
    在网络控制台中。(不带括号的函数名)

    它将打印出函数的源代码。

    sendMessage可以声明为:

    var inbox{
      sendMesssage:function(){
      }
    }
    
    //or
    
    function inbox(){
      this.sendMessage=function(){
      }
    }
    
    // or
    
    inbox.sendMessage=function(){}
    
    // or ...
    
    因此,查找“sendMessage”(“函数sendMessage”)或“function sendMessage”将找不到任何内容

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

    #!/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”的所有实例(文件+行号)。

    尝试搜索“sendMessage”可能的重复项,这可能是哪个web控制台的重复项?我尝试使用Firefox 26,菜单>web Developer>web控制台(Ctrl+Shift+K),它返回[object Function],当单击该选项时,会在右侧放置一个块,用于[对象函数]但我无法分辨它在哪里显示源代码。它在Firefox中使用Firebug和Chrome。