簡體   English   中英

如果我在代碼中犯了一個錯誤並導致javascript中的無限循環並且它繼續調用alert(),是否有辦法停止循環?

[英]if i make a mistake in code and cause an infinite loop in javascript and it keeps on calling alert(), is there a way out to stop the loop?

有時我使用調試代碼來警告javascript中的某些內容(例如,匹配正則表達式中的內容),但忘記修飾符並且警報處於無限循環中(或者如果循環匹配模式300次)。 如果使用Firefox,則警報會一直顯示,甚至無法關閉選項卡,窗口或應用程序。

如果我強行退出,它將關閉所有標簽甚至Firefox的其他窗口...實際上有一種方法可以更優雅地停止循環嗎?

最簡潔的答案是不。

這是使用Firebug和console.log函數的一個很好的理由。 具有諷刺意味的是,這將導致“停止腳本,因為它正在逃避對話”,在某些情況下不顯示,這意味着你現在回到了現在的位置。

Chrome和Opera都有此功能。 IE沒有,Apple Safari也沒有。

不是原生的解決方案,但你可以試試這個油脂猴子腳本: http//www.tumuski.com/2008/05/javascript-alert-cancel-button/

此外,您可以簡單地覆蓋警報功能以使用確認對話框,並在取消確認時停止顯示警報:

var displayAlerts = true;

然后:

function alert(msg) {
  if (displayAlerts) {
     if (!confirm(msg)) {
       displayAlerts = false;           
     }
  }
}

看起來你可以在Firefox中:

  1. 按住Ctrl鍵
  2. 按Enter鍵
  3. 按F4一次

根據博客文章,它並不適用於所有情況,更多信息請訪問: puremango.co.uk

谷歌瀏覽器允許您阻止顯示其他警報。

我寫了一個Firefox擴展來解決這個問題。

https://addons.mozilla.org/en-US/firefox/addon/13176

安裝Greasemonkey並轉到此頁面: http//www.tumuski.com/2008/05/javascript-alert-cancel-button/

為greasemonkey安裝此腳本后,任何警告對話框窗口都會有一個取消按鈕,它將停止javascript。

[在IE 11上測試]如果你需要關閉網頁瀏覽器並且不想出於任何原因ctrl-alt-del(在我的情況下,我的錯誤的javascript無限警報循環在citrix上運行,這將自動重新加載我的上一個會話之后來自緩存的ctrl-alt-del,我無法清除)

你可以通過按住alt-F4並發送垃圾郵件 (關閉瀏覽器窗口)來解決問題。

這非常快...... alt-F4非常快地關閉警報框,你會注意到瀏覽器頂部的X按鈕閃爍。 這為您提供了非常小的時間窗口,您可以在警報之間關閉它。

注意:如果您打開了多個選項卡,則需要先從屏幕底部控制欄上的圖標將其關閉,因為“關閉所有選項卡消息”會產生干擾。

沒門。 好的是,雖然大多數瀏覽器都有無限的遞歸保護,但這是offtopic。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM