在控制檯,Chrome和Firefox中,按Ctrl + C的等效功能是什麼?在實現各種算法時,我經常在Javascript中寫一些不退出的buggy(while
)循環,導致瀏覽器凍結。重新加載不起作用,點擊關閉該選項卡的小X不會執行任何操作,並且在一段時間內(字面上)我已經失去了內存,系統正在交換,並且我要離開休息一下。你如何在瀏覽器中斷JS?
回答
腳本標籤有一個Ctrl + C
爲JavaScript沒有這樣的事情。執行JavaScript的瀏覽器通常會保護自己。如果任何JavaScript掛起,他們會拋出一個對話框詢問用戶是否想要停止JavaScript。
超時時間通常可以在瀏覽器的設置中找到。您可以在這裏找到如何爲FireFox執行此操作:http://www.trixya.net/index.php/internet/how-to-set-javascript-timeout-in-firefox
當我的系統已經交換時,他們的確會拋出該對話。 – skrat 2012-03-13 16:26:21
在Chrome中,您可以點擊Shift+ESC
(或右鍵單擊標題欄並打開Chrome任務管理器),並終止與掛起選項卡關聯的進程。這將在關閉選項卡時不起作用。
需要注意的是,Chrome有時會將多個標籤簡化爲一個進程,這會終止與進程相關的所有標籤。
另一種方法,你可以去避免while
環吊的瀏覽器是寫這樣的代碼(你可以把它拿出來測試後):
var maxIterations = 100000;
while (foo) {
if (!maxIterations--) throw new Error('Max iterations hit, aborting.');
// do stuff
}
右擊Chrome的任務管理器,並選擇上下文菜單底部的項目,以顯示一個奇怪的復活節彩蛋。
從一點點的見解我到您的工作,我將如何着手的方法是:
- 只執行像按鈕單擊事件的腳本。這將運行腳本防止
onload
- Chrome可讓您在您的
js
代碼中設置斷點在開發工具
在瀏覽器中運行Javascript代碼沒有真正的「中斷器」。 ECMAscript在所謂的「UI線程」中執行,這意味着所有渲染的東西都發生在ECMAscript代碼執行的同一隊列中。
這反過來意味着,ECMAscript中的無限循環會自動掛起整個瀏覽器的交互。
,以避免這一點的唯一方法是寫清楚,乾淨的代碼。如果它發生,大多數瀏覽器都意識到UI線程忙得太久,並詢問用戶是否要取消正在運行的JavaScript進程。如果你不想等,那麼唯一的選擇是殺死整個瀏覽器/標籤進程。
但是,如果你知道你的腳本的某些部分確實可能導致無限循環,你可以手動在某種developer tools
設置breakpoints
或者你可以直接將debugger;
關鍵字爲你的腳本。這會導致JavaScript解釋器在當前行中停止,並且您有機會分析下一個代碼(例如條件),並在它看起來很糟糕時取消執行。
我無法做任何事情,試試'while(1){}'循環,並嘗試獲得一個乾淨的退出(關閉標籤,關閉窗口等) – skrat 2012-03-13 16:27:34
- 1. 你如何在Web瀏覽器上WP7
- 2. 在JS禁用瀏覽器
- 3. 如何判斷在瀏覽器中還是在NodeJS中運行?
- 4. 如何在瀏覽器中
- 5. 迷你javascript瀏覽器
- 6. jQuery的/ JS防止在瀏覽器中
- 7. 在JS中同步瀏覽器事件
- 8. 在瀏覽器中運行webtorrent js
- 9. JS廣播播放器在瀏覽網站時不斷重置
- 10. 你如何在瀏覽器中運行Jasmine測試?
- 11. 你如何在瀏覽器中運行摩卡測試?
- 12. 你如何在谷歌瀏覽器中打開html?
- 13. 如何禁用瀏覽器瀏覽器?
- 14. 迷你圖片瀏覽器(如myfonts.com上)
- 15. 如何在瀏覽器中使用網頁瀏覽器控件?
- 16. 如何在瀏覽器中讀取Connect Js cookie?
- 17. 如何查找JS代碼在瀏覽器中工作?
- 18. 如何在瀏覽器中使用podio-js(沒有Node.js)?
- 19. 如何在瀏覽器中本地執行.js文件?
- 20. JS瀏覽器檢測IE
- 21. 外部JS和瀏覽器
- 22. 非瀏覽器JS庫
- 23. 瀏覽器在PC上返回在JS
- 24. 如何將JS文件提供給每個瀏覽器,但IE瀏覽器
- 25. 我如何在瀏覽器
- 26. 你如何知道Node.js代碼將在瀏覽器上運行?
- 27. 如何防止瀏覽器窗口中的設計被切斷?
- 28. 你如何在你的網站上處理非常古老的瀏覽器?
- 29. 如何在Safari瀏覽器(Web瀏覽器)運行小程序
- 30. 如何在PHP中打開瀏覽器?
ctrl + alt + del – user544262772 2012-03-11 22:22:39
我不得不承認,這對於瀏覽器開發者來說更像是「動力」,以解決這種情況。 – skrat 2012-03-13 16:24:55
坦率地說,現有的JS執行者是愚蠢的,他們不能做這麼簡單的事情。 – Pacerier 2017-06-18 22:25:56