2010-04-26 3 views
6

Ich schreibe ein Spiel und ich habe eine Konsole für Entwickler, um mit JavaScript-Methoden im Spiel zu interagieren. Ich habe ein Problem. Ich kann nicht herausfinden, wie man JavaScript-Fehler auf die Konsole fallen lässt. Gibt es trotzdem Fehler in einem Div- oder HTML-Element?Ist es möglich, JavaScript-Fehler an ein div in HTML auszugeben?

+2

'ich herausfinden kann how bezeichnet ... Meinen Sie nicht? – SLaks

+0

Ich denke, er meinte wirklich "kann", er sagt, er weiß bereits, wie man Nachrichten an die Konsole –

+0

ablegen kann ich meinte, kann nicht Entschuldigung Jungs –

Antwort

6

Es klingt, als ob Sie bereits JS-Funktionen ausführen können und nur die Fehlerausgabe erfassen müssen? Wenn ja, sollten Sie in der Lage sein, dies zu tun, indem Sie Ihren Ausführungscode in einem try ... catch Block Verpackung:

var result; 

try { 
    result = eval($("#console-input").val()); 
} catch (ex) { 
    if (ex !== null && typeof ex !== "undefined") { 
     if (ex.message) ex = ex.message; 
    } else { 
     ex = "An unknown error occurred."; 
    } 

    result = ex; 
} 

$("#console-output").append($("<p/>").text(result)); 
$("#console-input").val(""); 

Dies wird das Ergebnis des Codes an einen Ausgang div hinzufügen, wenn kein Fehler auftritt. Wenn ein Fehler tritt auftreten, wird stattdessen entweder die Fehlermeldung (falls vorhanden) oder "ein unbekannter Fehler aufgetreten ist."

+0

+1 besseres Detail als meine Antwort! –

+0

genial vielen Dank Ben –

0

Benutzerdefinierte JavaScript-Fehler werden mit dem Befehl throw ausgegeben. Wenn Sie diese Fehler in ein Div eingeben möchten, verwenden Sie stattdessen die Methode innerHTML anstelle von throw und kehren sofort von der ausführenden Funktion zurück.

0
konsole = document.createElement('ul'); 
konsole.id = 'console'; 
document.getElementsByTagName('body')[0].appendChild(konsole); 

    function log(konsole, message, level) 
    { 
     if (undefined === level) level = 0; 
     messageElem = document.createElement('li'); 
     messageElem.className = 'level-' + level; 
     messageElem.innerHTML = message; 
     konsole.appendChild(messageElem); 
    }; 


document.getElementById('console') 

log(document.getElementById('console'), ':)'); 

Dann ist es nur über CSS ...

Verwandte Themen