Domanda

C'è un modo per eseguire il debug o traccia di ogni evento JavaScript in Internet Explorer 7?

Ho un bug che impedisce lo scorrimento dopo il testo-selezione, e non ho idea di quale evento o azione crea il bug.Voglio proprio vedere quali eventi vengono attivati quando muovo il mouse, per esempio.

C'è troppo lavoro per rewire la fonte e ho sperato che ci fosse qualcosa di simile a uno sniffer che mi mostra tutti gli eventi che vengono attivati.

È stato utile?

Soluzione

Borkdude ha detto:

Si potrebbe desiderare di provare Visual Studio 2008 e la sua funzione per eseguire il debug di codice JavaScript.

Ho hacking circa la gestione degli eventi più volte, e, a mio parere, anche se classica, passo debugger sono utili per tenere traccia di lunga esecuzione del codice, non sono buone in eventi di rilevamento.Immaginate di ascoltare mouse spostare gli eventi e rottura in un'altra applicazione, in ogni evento...Quindi, in questo caso, mi piacerebbe consigliare vivamente la registrazione.

Se il problema non è specifico per Internet Explorer 7, ma si verifica anche in Firefox, quindi un altro buon modo per eseguire il debug di codice JavaScript sia di Firefox che di Firebug add-on che ha un debugger JavaScript.

E c'è anche Firebug Lite per Internet Explorer.Non ho avuto l'occasione di usarlo, ma esiste.:-) Il lato negativo è che non ha un vero e proprio debugger, ma ha una finestra.oggetto console, che è esattamente ciò di cui avete bisogno.

Altri suggerimenti

Loop attraverso tutti gli elementi della pagina che hanno un onXYZ funzione definita e quindi aggiungere la traccia di loro:

var allElements = document.all; // Is this right? Anyway, you get the idea.

for (var i in allElements) {
    if (typeof allElements[i].onblur == "function") {
        var oldFunc = allElements[i].onblur;
        allElements[i].onblur = function() {
             alert("onblur called");
             oldFunc();
        };
    }
}

Si potrebbe desiderare di provare Visual Studio 2008 e la sua funzione per eseguire il debug di codice JavaScript.

Se il problema non è specifico per Internet Explorer 7, ma si verifica anche in Firefox, quindi un altro buon modo per eseguire il debug di codice JavaScript sia di Firefox che di Firebug add-on che ha un debugger JavaScript.Poi si può anche mettere console.log dichiarazioni nel codice JavaScript che si può vedere l'uscita di in Finestra Di Console in Firebug, invece di utilizzare gli avvisi che a volte rovinare l'evento catena.

@[nickf] - io sono abbastanza sicuro document.all Internet Explorer è un estensione specifica.

È necessario associare un gestore di eventi, non solo di 'guardare' il eventi.Un framework come jQuery della Microsoft Ajax library sarà facile dare i metodi per aggiungere i gestori di eventi.jQuery è bello perché del selettore quadro.

Allora io uso Firebug (estensione di Firefox) e mettere un punto di interruzione.Trovo Firebug è molto più facile da impostare e abbattere di Visual Studio 2008.

È di base, ma si potrebbe bastone di avvisi o di un documento.scrivere chiamate quando si attiva qualcosa.

Il modo più ovvio sarebbe quello di impostare avvisi per eventi, qualcosa di simile a:

element.onclick = function () { alert('Click event'); }

Altrimenti avete meno intrusivo possibilità di inserire i tuoi avvisi nel dom da qualche parte.

Ma, seriamente considerare l'utilizzo di una libreria come jQuery per implementare la funzionalità.Un sacco di cross-browser, i problemi sono stati risolti i problemi e non hai bisogno di risolvere di nuovo.Io non sono sicuro esattamente le funzionalità che si sta tentando di raggiungere, ma ci sono probabilmente un sacco di scorrimento e la selezione di plugin per jQuery è possibile utilizzare.

Non sono sicuro che il codice esatto (è stato un po da quando ho scritto la complessa codice JavaScript), ma si potrebbe enumerare tutti i controlli del form e allegare un evento che genera qualcosa quando viene attivato l'evento.

È anche possibile utilizzare le funzioni anonime per avvolgere le informazioni necessarie per identificare l'evento per il quale è stato di attivazione.

Una cosa che mi piace fare è creare un bind funzione in JavaScript (come quello che si può trovare in Prototipo biblioteca) in particolare per gli eventi, in modo che passi il "caso" oggetto lungo per la funzione associata.Ora, se si dovesse fare questo, si può semplicemente buttare in una traccia chiamata che verrà richiamato per ogni gestore che lo utilizza.E poi rimuoverlo quando non è necessario.Un unico luogo.Facile.

Tuttavia, indipendentemente da come si ottiene l'istruzione trace di essere chiamato, si vuole ancora vedere.La strategia migliore è quello di avere un riquadro separato o di una finestra che consegna il trace delle chiamate. Dojo Toolkit ha un built-in della console che funziona in Internet Explorer, e ci sono altre simili cose là fuori.Il classico modo per farlo è quello di creare una nuova finestra e document.write per esso.

  • Mi consiglia di associare una data e ora per ogni traccia.Mi ha aiutato molto nel passato.
  • Il debug e avvisi di solito non ti aiuterà, perché interrompe il normale flusso di eventi.

Matt Berseth è qualcosa che può essere il genere di cosa che si sta cercando in Il debug ASP.NET le Applicazioni AJAX con la Traccia Console AjaxControlToolkit Controllo.

Si basa su Yahoo YUI logger, YUI 2:Logger.

Il mio suggerimento è di usare FireFox insieme con FireBug e utilizzare il built-in Debug/oggetti Traccia.Sono un incanto.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top