2010-12-12 26 views
13

Tôi đang sử dụng Firebug để xem các lỗi JavaScript. Nhưng tôi cũng đang sử dụng jQuery. Vì lý do nào đó, tôi không bao giờ thấy lỗi JavaScript khi sử dụng jQuery và đây là một trong những vấn đề lớn nhất khi làm việc với jQuery ngay từ đầu.Ngừng chặn các lỗi JavaScript

Không có mã cụ thể để hiển thị, chỉ cần tưởng tượng alert(areareg); trong đó areareg không xác định hoặc bất kỳ loại lỗi JavaScript nào và Firebug sẽ không cho tôi biết về điều đó. JavaScript sẽ chỉ thất bại mà không cần cảnh báo hoặc thông báo về bất kỳ loại nào. Đây luôn là trường hợp, trong bất kỳ dự án nào mà tôi đã sử dụng jQuery và đó là lý do duy nhất tôi không thích jQuery; bởi vì rất khó để gỡ lỗi khi có sự cố.

Vì một số lý do tôi thậm chí còn gặp khó khăn trong việc tìm kiếm câu hỏi này được nêu trực tuyến, hãy để một mình trả lời. Nhưng tôi cho rằng tôi sẽ thử ở đây:

  1. Có cách nào để jQuery dừng nén thông báo lỗi không?
  2. Tôi có phải là người duy nhất trên thế giới luôn gặp vấn đề này với jQuery không?

EDIT: Tôi sử dụng cả Firefox (với Firebug) và Chrome và tôi chỉ sử dụng phiên bản không được rút gọn của jQuery. Tuy nhiên, tôi đã không bao giờ trong toàn bộ cuộc sống của tôi nhìn thấy một thông báo lỗi jQuery của bất kỳ loại nào, không hữu ích cũng không vô ích, và cũng không thực tế là các lỗi JavaScript bình thường, khi sử dụng jQuery.

+0

hầu hết các phương pháp như ẩn, hiển thị, v.v. id hoặc class nó không ném erros, cho mục đích gỡ lỗi của nó để khó tìm. – kobe

+0

Các lỗi mà bạn mô tả sẽ không được xử lý bởi jQuery và sẽ hiển thị trong Firebug và các bảng điều khiển web khác. Một vài người trong [phòng chat javascript] (http://chat.stackoverflow.com/rooms/17/javascript) đã đề cập rằng các phiên bản gần đây của Firebug không báo cáo lỗi chính xác. Có lẽ điều này có liên quan - hãy thử gỡ lỗi trong một trình duyệt khác, chẳng hạn như Chrome, trong một thời gian. –

+1

@andy E, tôi đồng ý với bạn rất nhiều, tôi cập nhật firebug gần đây và phải đối mặt với cùng một vấn đề, tôi phải bấm vào các lỗi, cửa sổ cảnh báo để kiểm tra lỗi. – kobe

Trả lời

2

Tôi sử dụng Google Chrome để gỡ lỗi và nó khá tốt, nó hiển thị tất cả các lỗi jquery (như Alfred nói, nếu bạn sử dụng phiên bản rút gọn, bạn sẽ không nhận được bất kỳ tên có ý nghĩa nào trong lỗi của mình, sử dụng nguồn thô)

+2

Tôi đã không nhận ra những công cụ gỡ lỗi Google Chrome tuyệt vời đến mức nào. Tôi đã sử dụng một số phiên bản bị tê liệt của Firebug cho Chrome. :) Google thắng một lần nữa! Cảm ơn! – Teekin

3

Vâng, bất chấp ấn tượng của bạn, chính jQuery cũng không làm bất cứ điều gì để "chặn" các thông báo lỗi. Bây giờ, Firefox hiện có xu hướng vứt bỏ một số loại ngoại lệ nhất định, đặc biệt giống như những gì bạn mô tả. Tôi thường thấy rằng gói một khối Javascript toàn bộ trong một try ... catch với một cuộc gọi cảnh báo nên một ngoại lệ xảy ra là một cách hữu ích để đối phó với nó, nhưng nó vẫn còn khó chịu.

1

Tôi gặp vấn đề tương tự trong FF 18. Tôi đang sử dụng JSF và JQuery, mặc dù nó xảy ra ngay cả đối với mã JS đơn giản trên trang. Tôi cố ý đặt mã javascript mà nên ném một lỗi cú pháp mà không có một từ trong Firebug. FF 18 có bảng điều khiển tích hợp của riêng nó trông giống như firebug. Khi tôi vô hiệu hóa plug-in firebug trong các thông điệp console.log bắt đầu hiển thị. Tuy nhiên, các lỗi vẫn không hiển thị. Tôi vừa thử Chrome và các lỗi xuất hiện ở đó.

0

Tôi đã gặp sự cố này nhiều lần. Nó khá không nhất quán và khó sao chép, đôi khi nó có vẻ liên quan đến các vấn đề phiên bản. Cài đặt hiếm khi có vẻ như tạo sự khác biệt, mặc dù "Break on next" đôi khi (không phải luôn luôn) xác định các lỗi bị trượt qua.

Một điều tôi đã nhận thấy là, nó có xu hướng xảy ra đối với mã được kích hoạt bên trong hàm gọi lại, ví dụ: từ sự kiện giao diện người dùng hoặc từ cuộc gọi AJAX.Đôi khi Firefox/Firebug sẽ hoạt động giống như các trình duyệt khác và hiển thị lỗi trong giao diện điều khiển, đôi khi nó mang lại gì cả ngay cả đối với những trường hợp cực kỳ rõ ràng như:

console.log('something'); // Shows up in console fine 
fail // Other browsers give undefined variable error, Firefox gives nothing 
console.log('something else'); // Never reached, so silent error clearly happens 

Cách tiếp cận tốt nhất mà tôi đã tìm thấy vấn đề này là:

  • Khi bạn đã tìm thấy một lỗi no-show, làm việc trở lại sử dụng console.trace() cho đến khi bạn đạt đến một điểm mà bên trong một hàm, các lỗi ẩn, bên ngoài, nó cho thấy, thêm một số đoạn mã như:

    console.trace(); 
    fail // cause the error, look out for a trace followed by nothing 
    
  • Nếu đó là một cuộc gọi AJAX, tự thêm một lỗi xử lý cơ bản, bởi vì đối với một số lý do Firefox/Firebug đang mất dần mặc định:

    $.ajax({ 
        error: function(a,b,c){ 
        throw c; 
        }, 
        other: '...settings' 
    } 
    
    • Nếu đó là một cái gì đó bạn có thể Không thêm chức năng xử lý lỗi vào, hãy bọc hàm đó trong một lần thử ... bắt, ví dụ:
    try { 
        // whatever the code is within which there are no errors 
    } catch(err){ 
        throw err; 
    } 
    

này nên là đủ để bắt tất cả các lỗi mà chưa từng họ trong phạm vi nơi Firefox đang mất chúng. Cẩn thận với những trường hợp bạn gọi lại trong khi gọi lại, bạn có thể cần thực hiện thao tác này hai lần ...

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