2012-06-28 110 views
7

I *正在使用客戶端JS來解析XML文件並生成複雜的JS代碼,結果爲eval。 (生成由運行時啓動的可重用函數)。但是,我需要調試正在生成的代碼,並且希望使用Chrome的內置斷點,步進,觀察窗等。設置斷點並調試eval'd JavaScript

Is there一個更簡單的方法來做到這一點比:

  • 轉儲生成的JS字符串到控制檯和/或窗口。
  • 複製JavaScript
  • (可選)通過一個美化工具(如JSBeautifier)運行JS。
  • 將JS粘貼到在另一個網頁中通過<script src="...">加載的文件中。

* 實際上,我的一個朋友在做這個,不是我

回答

16

而不是使用eval,而不是手動複製/粘貼到一個單獨的文件,你可以動態加載JS直接在通過在動態創建的<script>元素上使用data uri生成它的頁面中。通過這種方法,Chrome的開發工具(和Firebug)允許您選擇data-URI作爲腳本,打開漂亮打印,設置斷點,然後離開。

var js = createMyJSCodeString(); 
addCode(js); // Right now! Debuggable! 

// Dynamically evaluate JavaScript-as-string in the browser 
function addCode(js){ 
    var e = document.createElement('script'); 
    e.type = 'text/javascript'; 
    e.src = 'data:text/javascript;charset=utf-8,'+escape(js); 
    document.body.appendChild(e); 
} 
+0

你剛剛......回答自己?聽起來像你已經在你的問題中談到過這個。 – TheZ

+4

@TheZ是的,我做到了。這是[在Stack Overflow上接受的實踐](http://meta.stackexchange.com/questions/17845/etiquette-for-answering-your-own-question)添加到知識庫中。現在,當您發佈問題時,現在甚至會出現一個複選標記,用於自動添加答案,這是我在此處使用的。 – Phrogz

+0

哦,我明白了!感謝您解釋它 – TheZ

相關問題