2009-05-21 22 views
9

đôi khi tôi sử dụng mã gỡ lỗi để cảnh báo một cái gì đó trong javascript (ví dụ, kết hợp một cái gì đó trong biểu thức chính quy), nhưng quên một sửa đổi và cảnh báo là trong một vòng lặp vô hạn (hoặc nếu vòng lặp phù hợp với mô hình 300 lần). Nếu sử dụng Firefox, cảnh báo sẽ tiếp tục xuất hiện và không có cách nào để đóng tab, cửa sổ hoặc ứng dụng.nếu tôi thực hiện một sai lầm trong mã và gây ra một vòng lặp vô hạn trong javascript và nó giữ trên gọi cảnh báo(), là có một cách để ngăn chặn vòng lặp?

Nếu tôi buộc thoát, nó sẽ đóng tất cả các tab và thậm chí cả các cửa sổ khác của Firefox ... có thực sự là một cách để ngăn chặn vòng lặp duyên dáng hơn?

+0

Vì bạn không hỏi làm thế nào để thay đổi mã của bạn, điều này thực sự thuộc về SuperUser. Đó là một trường hợp ngẫu nhiên của các trang web cảnh báo cổ điển không bao giờ kết thúc cổ điển. – Jerph

Trả lời

17

Câu trả lời ngắn gọn là: Số

Đây là một lý do chính đáng để sử dụng Firebug và chức năng console.log. Mà, trớ trêu thay, sẽ gây ra các "dừng kịch bản bởi vì nó chạy trốn hộp thoại" để không hiển thị trong một số trường hợp, có nghĩa là bạn đang trở lại ngay bây giờ bạn đang ở đâu.

Chrome và Opera có tính năng này. IE không, Apple Safari cũng vậy.

Không phải là một giải pháp tự nhiên nhưng bạn có thể thử loại này kịch bản mỡ-khỉ: http://www.tumuski.com/2008/05/javascript-alert-cancel-button/

Ngoài ra, bạn thể chỉ đơn giản là ghi đè lên các chức năng cảnh báo sử dụng một xác nhận hộp thoại để thay thế và ngừng hiển thị cảnh báo nếu xác nhận bị hủy:

var displayAlerts = true; 

Và sau đó:

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

Có, Opera có hộp kiểm "Dừng thực thi tập lệnh trong trang này" ở cuối cửa sổ cảnh báo –

+3

Điều này không còn đúng nữa, hãy xem câu trả lời của Alex Key bên dưới. – TrojanName

2

Google Chrome cho phép bạn ngăn không cho cảnh báo bổ sung hiển thị.

+1

Bạn nghĩ rằng đây sẽ là một tính năng hiển nhiên đối với tất cả các trình duyệt. – ceejayoz

+0

Tôi luôn ngạc nhiên khi trình duyệt không có điều này. Cảm ơn chúa chrome đã giới thiệu nó. –

0

Không có cách nào. Điều tốt là mặc dù hầu hết các trình duyệt đều có khả năng bảo vệ đệ quy vô hạn, nhưng đó là điều không thuận lợi.

5

Hình như bạn có thể trong firefox:

  1. Giữ Ctrl
  2. Giữ Nhập
  3. Nhấn F4 lần

Theo bài viết trên blog, nó không hoạt động trong mọi trường hợp , thêm thông tin tại đây: puremango.co.uk

+1

btw. Tôi khuyên bạn nên sử dụng console.log, nhưng nếu bạn đã có chính mình trong một vòng lặp alert() (như tôi chỉ có, đó là một lối thoát tốt). –

+1

Tuyệt vời - mọi người vẫn nên sử dụng bàn điều khiển;), nhưng đó là ý kiến ​​nhiều hơn, và theo tinh thần của câu hỏi cổ đại này, tôi đã upvoted câu trả lời của bạn. – cgp

+1

Hoàn toàn đồng ý với @altCognito (+1); giao diện điều khiển là 99.99% thời gian tùy chọn tốt nhất. Một tình huống tôi đã tìm thấy nơi một cảnh báo() là tiện dụng trong một số trình duyệt đang bắt các biến ngay trước khi một cửa sổ đóng trong mã bên thứ 3. ví dụ. Khi gỡ lỗi chương trình học trực tuyến của bên thứ ba, thường bắt đầu các hành động khi cửa sổ đóng. Firebug sẽ duy trì kết quả đầu ra của bàn điều khiển sau khi đóng cửa sổ, nhưng các trình duyệt khác thì không. –

0

[thử nghiệm trên IE 11] Nếu bạn cần đóng trình duyệt web và không cần ant đến ctrl-alt-del vì bất kỳ lý do gì (trong trường hợp của tôi, vòng lặp cảnh báo vô hạn javascript chạy trên citrix sẽ tự động tải lại phiên cuối cùng của tôi sau một bộ nhớ cache mà tôi không thể xóa)

bạn có thể sửa lỗi theo cách của bạn bằng cách giữ phím Alt-F4 và gửi spam X (để đóng cửa sổ trình duyệt).

Thao tác này thực sự nhanh ... alt-F4 đóng các hộp cảnh báo rất nhanh và bạn sẽ thấy nút X ở đầu trình duyệt của bạn nhấp nháy. Điều này cung cấp cho bạn các cửa sổ rất nhỏ của thời gian mà bạn có thể đóng nó giữa các cảnh báo.

Lưu ý: nếu bạn có nhiều tab đang mở, bạn cần đóng chúng từ biểu tượng trên thanh điều khiển ở cuối màn hình trước tiên vì "đóng tất cả tin nhắn tab" sẽ can thiệp.

Các vấn đề liên quan