gỡ lỗi script - Dòng và cột trong các thuộc tính sự kiện Lỗi của Javascript
Tôi đã quyết định rằng có một số lỗi mà tôi không muốn gửi lên trình xử lý lỗi của trình duyệt. Nhưng tôi vẫn muốn biết về chúng. Trong mã thực tế của tôi, tôi có một hàm lưu các lỗi vào một phần tử ẩn và gửi chúng đến cơ sở dữ liệu bằng ajax. Dưới đây là một phiên bản đơn giản hóa của khối try của tôi:
try
{
newValueEvaled = eval(newValue);
}catch(err)
{
alert("Error caught: Line " + err.lineNumber + ((err.columnNumber != undefined)?', Column:' + err.columnNumber:"") + '\n' + err.message);
}
Tôi cũng muốn có columnNumber. Hiện tại nó chưa bao giờ xuất hiện, nhưng bằng cách nào đó console lỗi của trình duyệt lại có quyền truy cập vào nó. Có ai có thể cho tôi biết cách để tôi cũng có thể truy cập vào nó không?
Câu trả lời #1
Tôi gần như chắc chắn rằng không thể lấy số cột lỗi từ JavaScript chạy trong trang. Firebug/Bảng điều khiển WebKit/Bảng điều khiển IE có quyền truy cập vào các đối tượng nội bộ của trình duyệt, cung cấp nhiều thông tin hơn về ngăn xếp gọi so với những gì có sẵn cho mã chạy bên trong trang.
Câu trả lời #2
Bạn có thể truy cập dòng lỗi và có thể cả cột bằng cách sử dụng một hàm xử lý lỗi tùy chỉnh:
function dumpErrors(error, file, line, column)
{
alert('Error: ' + error + ', occurred in file: ' + file + ', on line: ' + line + ', at column: ' + (column || 'unknown'));
}
onerror = dumpErrors;
«Line» có sẵn cho tất cả trình duyệt. Đối với «column», có vẻ nó có sẵn trên Chrome phiên bản mới nhất (phiên bản 30.0+), nhưng không có trên Firefox (phiên bản 17, chạy trên Linux của tôi).
