2012-12-24 56 views
2

好的,所以我需要在網站上找到特定javascript函數的源代碼。 (具體細節並不重要,除非沒有辦法去做我要求的東西)找不到javascript函數調用的來源

我可以在html代碼鏈接中看到函數調用 onclick =「inbox.sendMessage();」

我知道這個函數可以工作,因爲如果我使用插件的話可以調用該頁面上的函數,但是,我已經搜索了該頁面中引用的每個.js文件,而且它們都沒有包含一個名爲sendMessage的函數。

我在問的是,有沒有一種方法可以將代碼追溯到源代碼,也許如果有方法來調試html並在onclick被觸發時中斷,然後進入函數以查看其源代碼,但我不知道我該怎麼做,或者甚至有可能。任何幫助將不勝感激,謝謝。

+0

嘗試只搜索「sendMessage」 –

+0

[在Chrome中查找Javascript函數定義]的可能重複(http://stackoverflow.com/questions/9828876/find-javascript-function-definition-in-chrome) – mmcrae

回答

4

我想你可以這樣做:

inbox.sendMessage 

在Web控制檯。 (函數名無括號)
它將打印出函數的源代碼。

+0

謝謝!它的工作:) – arch

+0

哪個Web控制檯做了這項工作?我嘗試使用Firefox 26,菜單> Web開發人員> Web控制檯(Ctrl + Shift + K),它返回[對象函數],當單擊時將右側的塊放在[對象函數]中,但我無法理清在哪裏它顯示了來源。 – jla

+0

它使用Firebug和Chrome在Firefox中工作。 http://stackoverflow.com/a/1368185/101151 http://stackoverflow.com/a/9828973/101151 – jla

2

我通常使用Opera,並在至少這是我做的:

  1. 打開Opera蜻蜓(Ctrl + Shift + I)。
  2. 單擊帶有onclick處理程序的HTML標記。
  3. 轉到右側欄中的監聽器選項卡。
  4. 查看click事件的收聽者。它顯示你的文件和行號。
2

的sendMessage可以聲明爲:

var inbox{ 
    sendMesssage:function(){ 
    } 
} 

//or 

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

// or 

inbox.sendMessage=function(){} 

// or ... 

所以尋找 「的sendMessage(」 或 「函數SendMessage」 不會找你什麼

在Chrome,Internet Explorer和Firefox(與螢火)你可以打F12和去調試,也可以檢查,因爲可能已經腳本動態加載已加載的腳本。

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 findfunction.rb」。

它會告訴你「inbox.sendMessage」的所有實例(文件+行號)。