2009-08-20 4 views
63

Come è possibile eseguire il debug di JavaScript con IE 8?Come eseguire il debug di Javascript con IE 8

debbuging La JavaScript con Visual Studio non funziona dopo un aggiornamento di IE 8.

+1

Grazie per l'aiuto, anche se idealmente sarebbe stata una risposta a una delle domande che hai citato nel post. La 'Ask Question' in StackOverflow è solo per fare domande! –

+1

È bello che tu voglia aiutare. Ma il modo in cui lo fai è: _Fai una domanda_, quindi pubblicalo come risposta _ alla domanda che hai chiesto_. –

+0

È meglio così? –

risposta

81

ho scoperto oggi che ora possiamo eseguire il debug JavaScript con il plug-in della barra degli strumenti di sviluppo integrato in IE 8.

  • Fare clic su ▼ Strumenti sulla barra degli strumenti, a destra delle schede.
  • Seleziona Strumenti per sviluppatori. Il dialogo Strumenti per sviluppatori dovrebbe aprirsi.
  • Fare clic sulla scheda Script nel dialogo.
  • Fare clic sul pulsante Avvia debug.

È possibile utilizzare orologio, punto di interruzione, vedere lo stack di chiamate ecc., Analogamente ai debugger nei browser professionali.

È anche possibile utilizzare la dichiarazione debugger; nel codice JavaScript per impostare un punto di interruzione.

+2

È possibile impostare i punti di interruzione senza il debugger; dichiarazione. IE8 è molto carino per il debug di JS, SOPRATTUTTO poiché è possibile renderizzare e analizzare come IE7, con strumenti IE8. –

+1

L'istruzione 'debugger' non sembra funzionare per me. – slikts

+2

@Reinis I. Hai messo un; dopo il tuo debugger; ?? –

6

Questo non ti aiuterà a passare attraverso il codice o ad infrangere errori, ma è un modo utile per ottenere la stessa console di debug per il tuo progetto su tutti i browser.

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' }); 

Questo è mettere insieme abbastanza in fretta ed è un po 'sciatta, ma è utile comunque e può essere migliorata facilmente!

3

Speravo di aggiungere questo come commento alla risposta di Marcus Westin, ma non riesco a trovare un collegamento - forse ho bisogno di più reputazione?


In ogni caso, grazie, ho trovato questo snippet di codice utile per il debug rapido in IE. Ho apportato alcune modifiche veloci per risolvere un problema che ha impedito di funzionare per me, anche per scorrere verso il basso automaticamente e utilizzare il posizionamento fisso in modo che appaia nella finestra. Ecco la mia versione nel caso qualcuno la trovi utile:

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

Non capisco.Come posso usare questo in IE8 per eseguire il debug di javascript, per favore? Esegui javascript per eseguire il debug di javascript? – Fandango68

+1

@ Fernando68 È JavaScript aggiungere una console di debug che si può vedere sulla pagina, che visualizzerà le cose che si registrano con 'myLog ('voglio vedere questo', fooObject);'. Penso che non avresti davvero bisogno di IE8 perché finché hai gli strumenti di sviluppo aperti, puoi usare console.log, debug passo-passo, ecc. Ma se ti ritrovi a dover eseguire il debug di browser anche più vecchi, forse potrebbe Aiuto. Per fortuna non ho dovuto usarlo per molto tempo! – poshaughnessy