Tương đương với cách nhấn Ctrl + C trong bảng điều khiển, cho Chrome và Firefox là gì? Trong khi thực hiện các thuật toán khác nhau tôi thường viết một số lỗi (while
) vòng lặp, trong Javascript, không thoát, làm cho trình duyệt bị đóng băng. Việc tải lại không hoạt động, việc nhấp vào X nhỏ để đóng tab không làm bất cứ điều gì, và trong một thời gian (nghĩa là) tôi đang hết bộ nhớ, hệ thống đang hoán đổi, và tôi sẽ nghỉ giải lao.Làm thế nào để bạn ngắt JS trong trình duyệt?
Trả lời
Không có những điều như một Ctrl + C
cho JavaScript. Các trình duyệt thực hiện JavaScript thường bảo vệ chính chúng. Nếu bất kỳ mã JavaScript nào bị treo, chúng sẽ ném một hộp thoại hỏi xem người dùng có muốn dừng JavaScript hay không.
Thời lượng hết giờ thường có thể được tìm thấy trong cài đặt của trình duyệt. Bạn có thể tìm cách làm điều đó cho FireFox tại đây: http://www.trixya.net/index.php/internet/how-to-set-javascript-timeout-in-firefox
Họ làm hộp thoại đó hơi quá muộn, khi hệ thống của tôi đã được trao đổi. – skrat
Trong Chrome, bạn có thể nhấn Shift+ESC
(hoặc nhấp chuột phải vào thanh tiêu đề và mở trình quản lý tác vụ Chrome) và hủy quá trình được liên kết với tab treo. Điều này sẽ làm việc trong trường hợp đóng tab sẽ không.
Thông báo trước là, đôi khi Chrome sẽ hợp lý hóa nhiều tab thành một quá trình và điều này sẽ giết tất cả các tab được liên kết với quy trình.
cách tiếp cận khác bạn có thể làm để tránh while
vòng treo trình duyệt là để viết mã như thế này (bạn có thể lấy nó ra sau khi thử nghiệm):
var maxIterations = 100000;
while (foo) {
if (!maxIterations--) throw new Error('Max iterations hit, aborting.');
// do stuff
}
Kích chuột phải vào trong Trình quản lý tác vụ của Chrome và chọn mục ở cuối trình đơn ngữ cảnh để hiển thị một quả trứng Phục sinh kỳ lạ.
'while (foo && --maxIterations) {...}' – vol7ron
@ vol7ron Tôi đã lưu các công cụ tối đa trên các dòng riêng biệt từ phần còn lại của mã để có thể dễ dàng bị loại bỏ sau này nếu cần –
Tôi hiểu bạn đang làm gì đang làm. Đối với tôi, sẽ dễ dàng hơn để xóa và giữ mọi thứ gần nhau. Có một khối riêng biệt nếu nó chia nhỏ nó một chút - bạn phải thực sự đọc vào khối trong khi thay vì chỉ nhìn vào các điều kiện và điều kiện trước – vol7ron
Từ những gì ít cái nhìn sâu sắc Tôi có vào cách bạn làm việc, làm thế nào tôi sẽ tiến hành là:
- Chỉ thực thi kịch bản về một sự kiện như nút bấm. Đây kịch bản sẽ ngăn chặn chạy
onload
- Chrome cho phép bạn thiết lập điểm break trong mã
js
của bạn trong tab kịch bản của công cụ phát triển
Không có "gián đoạn" thực sự cho việc chạy mã Javascript trong trình duyệt. ECMAscript được thực hiện trong cái gọi là "giao diện người dùng", có nghĩa là tất cả các công cụ hiển thị xảy ra trong cùng một hàng đợi mã ECMAscript được thực thi.
Điều đó có nghĩa là, vòng lặp vô hạn trong ECMAscript tự động treo toàn bộ tương tác trình duyệt.
Cách duy nhất để tránh điều đó là viết mã rõ ràng, sạch sẽ. Nếu nó xảy ra anyway, hầu hết các trình duyệt nhận ra rằng các chủ đề giao diện người dùng bận rộn quá lâu và yêu cầu người dùng nếu anh ta muốn hủy bỏ quá trình chạy javascript. Nếu bạn không muốn chờ đợi điều đó, lựa chọn duy nhất của bạn là giết toàn bộ quá trình duyệt/tab. Tuy nhiên, nếu bạn biết rằng một số phần của tập lệnh có thể gây ra vòng lặp vô hạn, bạn có thể đặt breakpoints
theo cách thủ công trong một số loại developer tools
hoặc bạn có thể chèn trực tiếp từ khóa debugger;
vào tập lệnh của mình.Điều đó làm cho trình thông dịch javascript dừng lại ở dòng hiện tại và bạn có cơ hội phân tích mã tiếp theo (trong khi điều kiện ví dụ) và hủy thực thi nếu nó có vẻ xấu.
Tôi không thể làm bất cứ điều gì, hãy thử một vòng lặp 'while (1) {}', và cố gắng để có được một lối ra sạch (đóng tab, đóng cửa sổ, vv) – skrat
- 1. Làm thế nào để bạn mở trình duyệt web Eclipse?
- 2. JS: Làm cách nào để tạo trình duyệt chéo document.getElementById?
- 3. Làm thế nào để cài đặt Zombie JS trên Windows 7? (trình duyệt không có node.js)
- 4. Làm thế nào để bạn phát hiện hỗ trợ cho VML hoặc SVG trong trình duyệt
- 5. Làm thế nào để gỡ lỗi ứng dụng js nút với điểm ngắt và mọi thứ?
- 6. cách tốt nhất để phát hiện trình duyệt trong js
- 7. Làm thế nào để mang lại thanh tra firebug trong JS Fiddle Cửa sổ đầu ra trong trình duyệt Chrome
- 8. Làm cách nào để kiểm tra trình duyệt hỗ trợ cảm ứng bằng JS/jQuery?
- 9. Làm thế nào để bạn giao tiếp giữa 2 tab/cửa sổ trình duyệt?
- 10. Làm thế nào để screentoaster.com chụp màn hình máy tính của bạn từ trình duyệt?
- 11. Làm thế nào để bạn kiểm tra mô-đun xử lý ngắt của bạn?
- 12. Làm thế nào để bạn bao gồm một tệp js khác trong v8 của Google?
- 13. Làm cách nào để phát hiện IE10 từ JS khi chế độ trình duyệt là IE9?
- 14. Làm thế nào để ngăn trình duyệt yêu cầu favicon?
- 15. Làm thế nào để sử dụng các trình duyệt từ xa cho nhiệm vụ js-test-driver trên Jenkins?
- 16. Làm cách nào để bạn phát hiện trình duyệt hiện tại trong Bộ điều khiển Api?
- 17. Làm thế nào để bạn loại bỏ các đường lưới nền trong nvd3.js?
- 18. Facebook JS kết nối trình duyệt không được hỗ trợ
- 19. Làm cách nào để ngụy trang tập lệnh PHP của bạn làm trình duyệt?
- 20. làm thế nào để xóa bộ nhớ cache của trình duyệt theo lập trình trong jsp?
- 21. Làm thế nào để bạn thay đổi kích thước một cửa sổ trình duyệt IE để 1024 x 768
- 22. Làm thế nào để xóa các điểm ngắt trong XCode
- 23. Tôi làm cách nào để quay video trong trình duyệt?
- 24. Làm thế nào để bạn lập trình một thuộc tính?
- 25. Làm thế nào để khai báo một trình xử lý ngắt (ISR) trong Mspgcc?
- 26. Làm thế nào để bạn xóa tiêu điểm trong javascript?
- 27. Làm thế nào để loại bỏ kho git khỏi Trình duyệt Kho lưu trữ trên Netbeans?
- 28. Làm thế nào tôi có thể thiết lập các điểm ngắt trong một kịch bản JS bên ngoài trong Firebug
- 29. Làm cách nào để bạn có thể buộc trình duyệt tải xuống tệp xml?
- 30. Làm cách nào để Javascript của bạn có điều kiện, tùy thuộc vào trình duyệt?
ctrl + alt + del – user544262772
Tôi phải thừa nhận rằng điều này có nghĩa là nhiều hơn là "động lực" cho các nhà phát triển trình duyệt, để khắc phục tình huống. – skrat
Những người thực thi JS hiện tại thật ngu ngốc rằng họ không thể làm điều gì đó đơn giản như vậy. – Pacerier