2009-08-20 34 views
63

Làm cách nào để chúng tôi có thể gỡ lỗi JavaScript bằng IE 8?Cách gỡ lỗi Javascript với IE 8

debbuging với Visual Studio JavaScript không hoạt động sau khi cập nhật lên IE 8.

+1

Cảm ơn sự giúp đỡ, mặc dù lý tưởng đó là phản hồi cho một câu hỏi bạn đã đề cập trong bài đăng. Câu hỏi 'Hỏi' ​​trong Stackoverflow chỉ là để đặt câu hỏi! –

+1

Thật tuyệt vời mà bạn muốn giúp đỡ. Nhưng cách bạn làm điều này là để _Ask một câu hỏi_, và sau đó đăng bài này như là một _response cho câu hỏi mà bạn yêu cầu. –

+0

Có tốt hơn không? –

Trả lời

81

tôi phát hiện ra ngày hôm nay rằng bây giờ chúng tôi có thể gỡ lỗi Javascript Với ​​sự bổ sung thanh công cụ nhà phát triển integreted trong IE 8.

  • Nhấp vào ▼ Công cụ trên thanh công cụ, ở bên phải của các tab.
  • Chọn Công cụ phát triển. Hộp thoại Công cụ dành cho nhà phát triển sẽ mở ra.
  • Nhấp vào tab Tập lệnh trong hộp thoại.
  • Nhấp vào nút Bắt đầu gỡ lỗi.

Bạn có thể sử dụng đồng hồ, điểm ngắt, xem ngăn xếp cuộc gọi, v.v, tương tự như các trình gỡ rối trong trình duyệt chuyên nghiệp.

Bạn cũng có thể sử dụng câu lệnh debugger; trong mã JavaScript của mình để đặt điểm ngắt.

+2

Bạn có thể đặt điểm ngắt không có trình gỡ lỗi; tuyên bố. IE8 là khá tốt đẹp cho JS gỡ lỗi, đặc biệt kể từ khi bạn có thể render và phân tích cú pháp như IE7, với các công cụ IE8. –

+1

Câu lệnh 'debugger' dường như không hoạt động đối với tôi. – slikts

+2

@Reinis I. Bạn đã đặt một; sau trình gỡ lỗi của bạn; ?? –

6

Điều này sẽ không giúp bạn bước qua mã hoặc phá vỡ lỗi, nhưng đó là một cách hữu ích để có cùng bảng điều khiển gỡ lỗi cho dự án của bạn trên tất cả các trình duyệt.

myLog = function() { 
    if (!myLog._div) { myLog.createDiv(); } 

    var logEntry = document.createElement('span'); 
    for (var i=0; i < arguments.length; i++) { 
     logEntry.innerHTML += myLog.toJson(arguments[i]) + '<br />'; 
    } 
    logEntry.innerHTML += '<br />'; 

    myLog._div.appendChild(logEntry); 
} 
myLog.createDiv = function() { 
    myLog._div = document.body.appendChild(document.createElement('div')); 
    var props = { 
     position:'absolute', top:'10px', right:'10px', background:'#333', border:'5px solid #333', 
     color: 'white', width: '400px', height: '300px', overflow: 'auto', fontFamily: 'courier new', 
     fontSize: '11px', whiteSpace: 'nowrap' 
    } 
    for (var key in props) { myLog._div.style[key] = props[key]; } 
} 
myLog.toJSON = function(obj) { 
    if (typeof window.uneval == 'function') { return uneval(obj); } 
    if (typeof obj == 'object') { 
     if (!obj) { return 'null'; } 
     var list = []; 
     if (obj instanceof Array) { 
      for (var i=0;i < obj.length;i++) { list.push(this.toJson(obj[i])); } 
      return '[' + list.join(',') + ']'; 
     } else { 
      for (var prop in obj) { list.push('"' + prop + '":' + this.toJson(obj[prop])); } 
      return '{' + list.join(',') + '}'; 
     } 
    } else if (typeof obj == 'string') { 
     return '"' + obj.replace(/(["'])/g, '\\$1') + '"'; 
    } else { 
     return new String(obj); 
    } 
} 

myLog('log statement'); 
myLog('logging an object', { name: 'Marcus', likes: 'js' }); 

Điều này được đặt cùng nhau khá nhanh và hơi cẩu thả, nhưng nó vẫn hữu ích và có thể được cải thiện dễ dàng!

3

Tôi đã hy vọng thêm điều này làm nhận xét cho trả lời của Marcus Westin, nhưng tôi không thể tìm thấy liên kết - có thể tôi cần danh tiếng hơn?


Dù sao, cảm ơn, tôi thấy đoạn mã này hữu ích để gỡ lỗi nhanh trong IE. Tôi đã thực hiện một số chỉnh sửa nhanh để khắc phục sự cố khiến nó ngừng hoạt động đối với tôi, cũng để cuộn xuống tự động và sử dụng định vị cố định để nó xuất hiện trong chế độ xem. Đây là phiên bản của tôi trong trường hợp bất kỳ ai tìm thấy nó hữu ích:

myLog = function() { 

    var _div = null; 

    this.toJson = function(obj) { 

     if (typeof window.uneval == 'function') { return uneval(obj); } 
     if (typeof obj == 'object') { 
      if (!obj) { return 'null'; } 
      var list = []; 
      if (obj instanceof Array) { 
        for (var i=0;i < obj.length;i++) { list.push(this.toJson(obj[i])); } 
        return '[' + list.join(',') + ']'; 
      } else { 
        for (var prop in obj) { list.push('"' + prop + '":' + this.toJson(obj[prop])); } 
        return '{' + list.join(',') + '}'; 
      } 
     } else if (typeof obj == 'string') { 
      return '"' + obj.replace(/(["'])/g, '\\$1') + '"'; 
     } else { 
      return new String(obj); 
     } 

    }; 

    this.createDiv = function() { 

     myLog._div = document.body.appendChild(document.createElement('div')); 

     var props = { 
      position:'fixed', top:'10px', right:'10px', background:'#333', border:'5px solid #333', 
      color: 'white', width: '400px', height: '300px', overflow: 'auto', fontFamily: 'courier new', 
      fontSize: '11px', whiteSpace: 'nowrap' 
     } 

     for (var key in props) { myLog._div.style[key] = props[key]; } 

    }; 


    if (!myLog._div) { this.createDiv(); } 

    var logEntry = document.createElement('span'); 

    for (var i=0; i < arguments.length; i++) { 
     logEntry.innerHTML += this.toJson(arguments[i]) + '<br />'; 
    } 

    logEntry.innerHTML += '<br />'; 

    myLog._div.appendChild(logEntry); 

    // Scroll automatically to the bottom 
    myLog._div.scrollTop = myLog._div.scrollHeight; 

} 
+0

Tôi không hiểu.Làm thế nào tôi có thể sử dụng điều này trong IE8 để gỡ lỗi javascript xin vui lòng? Chạy javascript để gỡ lỗi javascript? – Fandango68

+1

@ Fernando68 Đó là JavaScript để thêm một bảng điều khiển gỡ lỗi mà bạn có thể thấy trên trang, sẽ hiển thị những thứ bạn đăng nhập với 'myLog ('tôi muốn thấy điều này', fooObject); Tôi nghĩ rằng bạn không nên thực sự cần nó với IE8 vì miễn là bạn có các công cụ phát triển mở, bạn có thể sử dụng console.log, bước thông qua gỡ lỗi vv Nhưng nếu bạn thấy mình phải gỡ lỗi ngay cả các trình duyệt cũ hơn, có lẽ nó có thể Cứu giúp. Rất may tôi đã không phải sử dụng điều này trong một thời gian dài bản thân mình! – poshaughnessy

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