Tôi có một tập lệnh phát hiện lỗi Javascript trên trang web của mình và gửi chúng đến phần phụ trợ của tôi để báo cáo. Nó báo cáo lỗi đầu tiên gặp phải, số dòng được cho là và thời gian.
EDIT để bao gồm doctype:
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en" xmlns:fb="http://www.facebook.com/2008/fbml">
...
<script type="text/javascript">
//<![CDATA[
// for debugging javascript!
(function(window){
window.onerror = function(msg, url, ln) {
//transform errors
if (typeof(msg) === 'object' && msg.srcElement && msg.target) {
if(msg.srcElement == '[object HTMLScriptElement]' && msg.target == '[object HTMLScriptElement]'){
msg = 'Error loading script';
}else{
msg = 'Event Error - target:' + msg.target + ' srcElement:' + msg.srcElement;
}
}
msg = msg.toString();
//ignore errors
if(msg.indexOf("Location.toString") > -1){
return;
}
if(msg.indexOf("Error loading script") > -1){
return;
}
//report errors
window.onerror = function(){};
(new Image()).src = "/jserror.php?msg=" + encodeURIComponent(msg) + "&url=" + encodeURIComponent(url || document.location.toString().replace(/#.*$/, "")) + "&ln=" + parseInt(ln || 0) + "&r=" + (+new Date());
};
})(window);
//]]>
</script>
Do tập lệnh này, tôi nhận thức sâu sắc về bất kỳ lỗi javascript nào đang xảy ra trên trang web của mình. Một trong những người phạm tội lớn nhất là "Lỗi Script". trên dòng 0. trong Chrome 10+ và Firefox 3+. Lỗi này không tồn tại (hoặc có thể được gọi là cái gì khác?) Trong Internet Explorer.
Sửa chữa (23/5/2013): Lỗi "Lỗi Script, Dòng 0" này hiện đang hiển thị trong IE7 và có thể các phiên bản IE khác. Có thể là kết quả của một bản vá bảo mật IE gần đây vì hành vi này trước đây không tồn tại.
Có ai có ý tưởng gì về lỗi này có nghĩa là gì hoặc nguyên nhân gây ra nó không? Nó xảy ra với khoảng 0,25% tổng số trang tải của tôi và chiếm một nửa số lỗi được báo cáo.
application/xhtml+xml
để chạy nó trong trình phân tích cú pháp XHTML (như đặc tả XHTML nói). Có rất nhiều nội dung tuyên bố là XHTML, nhưng gửi tài liệu HTML bình thường. Do cách người tạo nội dung sử dụng XHTML không chính xác, các trình duyệt đã quyết định chỉ sử dụng trình phân tích cú pháp XML trên application/xhtml+xml
(đó là trình phân tích cú pháp thực sự nghiêm ngặt). Các hixie.ch/advocacy/xhtml và webdevout.net/articles/beware-of-xhtml nói tại sao không sử dụng HTML parser với XHTML.