Durante años, no utilicé Visual Studio para trabajar en Gadgets. Hay algunas maneras en que puede depurar gadgets sin él, pero no de forma tan exhaustiva. Por ejemplo, no puede usar el comando debugger;
sin un depurador adecuado conectado al proceso. Lo que puede hacer es utilizar un programa como DebugView para atrapar los mensajes de salida por el System.Debug.outputString()
método:
function test()
{
System.Debug.outputString("Hello, I'm a debug message");
}
Esto le permite a los vertederos de variables de salida y otras cositas de información útiles en ciertas etapas de su código, para que pueda controlar como quieras
Como alternativa, puede desplegar sus propios mensajes de detención de errores/secuencias de comandos usando window.prompt()
. alert()
se deshabilitó para los gadgets y confirm()
se reemplaza para que siempre devuelva verdadero, pero deben haber pasado por alto prompt()
.
function test()
{
// execute some code
window.prompt(someVarToOutput, JSON.stringify(someObjectToExamine));
// execute some more code
}
El método JSON.stringify()
realmente ayuda si desea examinar el estado de un objeto durante la ejecución de código.
En lugar de window.prompt
, también puede utilizar la función de VBScript MsgBox()
:
window.execScript(//- Add MsgBox functionality for displaying error messages
'Function vbsMsgBox (prompt, buttons, title)\r\n'
+ ' vbsMsgBox = MsgBox(prompt, buttons, title)\r\n'
+ 'End Function', "vbscript"
);
vbsMsgBox("Some output message", 16, "Your Gadget Name");
Por último, se puede tomar todos los errores con su secuencia de comandos con el manejador de window.onerror
evento.
function window.onerror (msg, file, line)
{
// Using MsgBox
var ErrorMsg = 'An error has occurred'+(line&&file?' in '+file+' on line '+line:'')+'. The message returned was:\r\n\r\n'+ msg + '\r\n\r\nIf the error persists, please report it.';
vbsMsgBox(ErrorMsg, 16, "Your Gadget Name");
// Using System.Debug.outputString
System.Debug.outputString(line+": "+msg);
// Using window.prompt
window.prompt(file+": "+line, msg);
// Cancel the default action
return true;
}
El evento window.onerror
incluso le permite emitir el número de línea y el archivo (sólo precisa con IE8) en el que se produjo el error.
Eliminación de errores de buena suerte, y recuerde no salir de ninguna window.prompts ni de MsgBoxes cuando publique su gadget.
Muy útil. Gracias. ¿Necesito una biblioteca para usar el objeto JSON o es parte del entorno del host de gadgets de Windows? – bshacklett
@bshacklett: Está integrado en IE8, pero su dispositivo debe estar en modo IE8. También puede obtener un analizador y un secuenciador de http://json.org/js.html –
¿Se ejecutan en modo IE8 simplemente por tener IE8 instalado en el sistema o es algo que debo especificar? – bshacklett