我想調試一堆重定向用戶的函數。我想在腳本運行時「殺死」腳本來讀取console.log()的輸出。我不能只使用簡單的return
,因爲有很多功能可以一起工作。如何殺死一個JavaScript腳本?
1
A
回答
1
設定在要暫停在代碼當場斷點。如果在代碼中添加debugger
statement,那麼支持它的瀏覽器將自動停止並打開調試器(實際上,我認爲某些瀏覽器(Chrome?)可能會忽略該語句,除非您已經打開了控制檯/ dev工具,但顯然是您只需要開啓開發工具即可)。
+0
如果控制檯沒有打開,Chrome肯定會忽略它。 IE可能也是如此;除非控制檯處於打開狀態,否則它將與'console'一起使用。 – 2012-03-12 02:34:03
1
有幾個選項,不是所有的人適用於您的情況:
- 拋出一個異常;這將停止函數和任何調用者函數;如ismaelga建議的那樣使用
alert()
; - 設置一個斷點,如nnnnnn建議;您可以使用
debugger
關鍵字或使用瀏覽器的GUI(如果存在); - 重新定義
console.log
爲空函數;這種方式從此不會記錄任何東西,因此您可以閱讀迄今記錄的內容,而不受干擾。
某些情況下的選項將是不可能的:
- 如果您的代碼對事件作出響應,或使用像
setInterval
,即使「主循環」停止其他代碼仍然可以運行,記錄東西; - 警報窗口可能會使查看日誌變得困難,這取決於您的瀏覽器有多麼突兀;
- 沒有合適的調試器,或者你不能安裝一個;
- 一些功能已存儲的
console.log
本地副本,所以重新定義它不會影響到他們。
在所有選項中,我會佔據第4位,因爲您可以平靜地閱讀您的日誌而不會「破壞」頁面。如果你想「過濾」日誌,你也可以使用一些函數調用「正確的」日誌(console.log
的保存副本),而其他的調用「假的」日誌(你重新定義的那個)。
0
聲明全局變量,它是任何函數的外部,並且,檢查該變量的值,並且僅當該值設置以一定的方式進行,每個功能或長時間運行循環中添加代碼。通過這種方式,變量可以用作信號量,您可以從任何地方更改其值並根據其值終止所有處理。
例如,被初始化爲假,但可以設置爲true,讓所有功能知道要回來,所有迴路儘快打破了簡單的布爾變量叫stopProcessing。
相關問題
- 1. 如何在殺死一個php腳本時殺死passthru進程?
- 2. 如何殺死bash腳本
- 3. `exec`殺死腳本
- 4. 如何殺死一個javascript函數?
- 5. 如何從另一個php腳本中殺死一個php腳本?
- 6. 如何從Python腳本中殺死SimpleHTTPServer?
- 7. 如何通過java腳本殺死chromedriver.exe
- 8. 如何在WebView中殺死腳本?
- 9. 如何殺死Java中的Python腳本?
- 10. 如何殺死一個ssh腳本運行?
- 11. 如何殺死一個腳本創建的後臺進程
- 12. MySQL查詢殺死腳本
- 13. 殺死包含腳本'time.sleep()`
- 14. 無法殺死Python腳本
- 15. 無法殺死PHP腳本
- 16. 如何找到一個過程,在一個單一的bash腳本殺死它
- 17. 如何在死屏幕會話中殺死運行腳本
- 18. 我該如何殺死這個bash腳本?
- 19. 如何殺死
- 20. 如何殺死一個C#線程?
- 21. 如何殺死一個窗口?
- 22. 如何殺死一個PHP會話?
- 23. 如何殺死一個Activity和AsyncTask
- 24. 如何殺死一個線程?
- 25. 如何殺死一個異步任務?
- 26. 如何殺死一個進程?
- 27. 如何殺死一個web進程
- 28. 如何殺死一個BufferedInputStream .read()調用
- 29. 如何殺死一個CodeMirror實例?
- 30. 如何殺死從另一個功能
你試過alert()嗎? – 2012-03-12 02:21:39
「許多共同工作的功能」在這裏沒有用處。他們如何加載?它們是否按設定的時間間隔到期它們是異步加載的嗎?他們是事件處理程序嗎? – ZJR 2012-03-12 02:22:13