2010-02-17 16 views

Respuesta

16

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.

+0

Muy útil. Gracias. ¿Necesito una biblioteca para usar el objeto JSON o es parte del entorno del host de gadgets de Windows? – bshacklett

+0

@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 –

+0

¿Se ejecutan en modo IE8 simplemente por tener IE8 instalado en el sistema o es algo que debo especificar? – bshacklett

9

En Windows 7 una nueva clave de registro se ha añadido que muestra los errores de script en tiempo de ejecución en un PC determinado:

[HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Sidebar] 
"ShowScriptErrors"=dword:00000001 

Con ese conjunto de valores, verá cuadros de diálogo cuando se producen errores de script.

+0

No puedo ver ningún cuadro de diálogo apareciendo. ¿Qué más se puede necesitar para que esto funcione? –

Cuestiones relacionadas