2008-10-07 4 views
8

Sto scrivendo un'app che per vari motivi comporta Internet Explorer (IE7, per la cronologia), controlli ActiveX e una quantità eroica di JavaScript, che è distribuita su più file .js.Esiste un modo valido o affidabile per capire dove un errore JavaScript sta utilizzando solo un messaggio di errore di Internet Explorer?

Uno dei nostri tester a distanza sta vivendo un messaggio di errore e il messaggio di errore di IE dice qualcosa per l'effetto di:

Line: 719 
Char: 5 
Error: Unspecified Error 
Code: 0 
URL: (the URL of the machine) 

C'è solo un file JavaScript che ha oltre 719 linee e la linea 719 è una riga vuota (in questo caso).

Nessuno dell'HTML o di altri file coinvolti nel progetto ha 719 o più righe, ma l'HTML risultante (è una sorta di cosa di inclusione lato server), almeno come mostra IE da "Visualizza origine". 719 o più righe - ma la riga 719 (in questo caso) è un tag di riga della tabella di chiusura (nessun JavaScript, in altre parole).

In questo caso, i risultati di "Visualizza origine generata" sono solo 310 righe.

Immagino che sia possibile che l'intera pagina, con i contenuti dei file JavaScript rappresentati in linea con il resto dell'HTML, sia dove si riferisce l'errore ma non conosco un buon modo per vista ciò che sarebbe,

Quindi, dato un errore JavaScript da Internet Explorer in cui il numero di riga è l'unico indizio ma la pagina è in realtà diffusa in più file?

UPDATE: Il problema è aggravato dal fatto che l'utente si verifica questo è remota e per vari motivi di rete, il debug utilizzando qualcosa di simile a Visual Studio 2008 (che ha impressionante debug JavaScript, tra l'altro) è impossibile. Mi limito ad avere uno di noi a guardare la fonte per cercare di capire quale linea di codice è saltata fuori.

UPDATE 2: La risposta reale (come accettata di seguito) sembra essere "no, non proprio". Per quel che vale, però, il fatto che Robert J. Walker non ne abbia mai parlato mi ha fatto puntare nella giusta direzione perché penso che fosse la linea offensiva. Ma dal momento che non è proprio quello che definirei buono o affidabile (colpa di IE, non di Robert J. Walker), accetterò la risposta "no, non proprio". Non sono sicuro che questa sia una buona etichetta di SO. Per favore fatemi sapere se non è tramite i commenti.

+0

Che aspetto ha la linea 718? IE di solito specifica il numero di riga + 1 nella sua finestra di errore. – Jared

+0

Puoi inserire la versione nell'oggetto? Apparentemente IE 8 è molto meglio del numero di linea ... – benc

+0

Inoltre, potresti cambiare argomento e descrizione per indicare che questa è una situazione in cui stai analizzando un problema dell'utente finale. Quindi, non è possibile utilizzare un debugger. (Sono in una situazione simile, quindi sto osservando attentamente questa discussione). – benc

risposta

5

In breve. Non proprio. Prova a trovare prima l'errore in FF e, se fallisce, puoi ottenere un debugger quasi altrettanto efficace con Visual Web Developer. Debugging IE fa schifo per la maggior parte.

+0

Lo stavo per dire se non lo fossi - è sbagliato dire "no, non puoi farlo", ma nel caso di IE ... a volte devi dirlo. –

3

Il modo migliore che ho trovato per eseguire il debug di javascript era quello di aggiungere diversi Response.Write() o un messaggio di avviso vicino al luogo in cui credevo che il codice si fosse rotto. La scrittura o l'avviso che non mostra è più vicino all'area problematica del codice.

Ho fatto in questo modo perché non ho trovato un modo più semplice.

Aggiornamento: Se si utilizza questo metodo di debug, è possibile utilizzare anche le scritture/gli avvisi sul contenuto delle variabili.

+0

Buon vecchio debugging della dichiarazione di stampa. Mi riporta indietro :) –

+0

console.log è solo il debug di stampa che stampa su un buffer differente.: D – eyelidlessness

1

Prova Firebug. I è disponibile per IE: http://getfirebug.com/lite.html

+0

"View Source" restituirà la fonte del documento - non tutti i file javascript inclusi con script src = "blah" –

+0

Questo progetto uccide Firebug per IE (l'ho provato), probabilmente a causa del coinvolgimento di ActiveX. –

1

Hai controllato se questo errore è presente anche in Firefox utilizzando Firebug? Quello sarebbe il mio primo passo nel tentativo di capire dove si sta verificando questo errore.

Se non è presente in Firefox, quindi passerei all'abilitazione del debug degli script in IE.

+0

Il coinvolgimento di ActiveX non consente di provare questo in Firefox. –

+0

OK, quindi abiliterei il debugging degli script in IE. Per fare ciò: strumenti > Opzioni Internet -> Avanzate -> deselezionare 'Disabilita debug di script (Internet Explorer) Ciò consentirà di entrare in un debugger (come VS.NET) e evidenzierà la riga in cui si è verificato l'errore si verifica. –

+0

Sì, e questo è quello che faccio localmente, ma l'utente/tester che sta avendo questo problema non ha alcun software di sviluppo in modo che non possano eseguire il debug né posso eseguire il debug in remoto. –

3

Lo sviluppatore web in IE7 può dare una vista origine reso.

View > Source > Dom (Page) 

Questo potrebbe essere più preciso se si considerano i numeri di riga forniti da IE per gli errori di script.

+0

questo sembra utile - non sapevo che la barra degli strumenti sviluppatore avesse questa opzione prima - grazie! –

+0

Questo è piuttosto comodo, ma non mi aiuta in questo caso, temo. Produce codice sorgente che non ha abbastanza linee e non include JavaScript in linea (se questo è il problema). Il punto cruciale di questo problema è che l'unica cosa che devo fare è un numero di linea apparentemente inutile. –

+0

Mi dispiace che non sia stato d'aiuto. – EndangeredMassa

1

Il mio unico consiglio: non utilizzare IE per il debug in questo modo. È il peggiore dei browser mainstream in assoluto: cerco di utilizzare Firefox (con Firebug) o Chrome/Safari per gestire la maggior parte dei problemi.

Se è assolutamente necessario utilizzare IE, installare il IE Developer Toolbar (che non sembra aiutare molto con errori JavaScript), e/o installare Script Debugger

+3

ma non usare IE non ti aiuta veramente per errori javascript specifici di IE, vero? –

2

Installando firebug lite sul server per quella pagina:

<script type='text/javascript' 
    src='http://getfirebug.com/releases/lite/1.2/firebug-lite-compressed.js'> 
</script> 

è possibile accedere ad una console virtuale con,

firebug.d.console.log("stuff and things") 
firebug.d.console.dir({returnedObject:["404", "Object Not Found"]}) 

e chiedere il vostro tester a distanza per avere maggiori dettagli per y o premendo F12.

Sospetto che ci sia una stringa non terminata o una parentesi o parentesi ineguagliata.

2

No, non c'è un modo per far sì che il messaggio di eccezione incorporato risucchi di meno.

Invece è necessario utilizzare un debugger con IE. Il miglior tutorial che ho trovato per questo è qui:

http://www.berniecode.com/blog/2007/03/08/how-to-debug-javascript-with-visual-web-developer-express/

Seguire queste istruzioni e in caso di errore o eccezione vi verrà mostrato l'esatta linea nel file corretto. Vedrai anche il valore delle variabili nell'ambito corrente e puoi impostare gli elementi "guardati" per aiutarti a eseguire il debug.

A parte questo, se avete bisogno di registrazione e ispezione CSS Cascade come Firebug che ho avuto buoni risultati con DebugBar e JSCompanion:

http://www.debugbar.com/ http://www.my-debugbar.com/wiki/CompanionJS/HomePage

3

Suggerimento: Trovo che molti IE linea messaggio di errore i numeri sono da uno!

Problemi correlati