borrame.com - Colección particular de recortes de código y documentación para programación web

Lo más fresco

  1. LPAD en SQL Server Nuevo
  2. Eliminar todos los objetos en SQL Server Modificado
  3. Dominio principal Nuevo
  4. Eliminar formato en Excel Nuevo

Sugerencias del chef

Lo más visitado

  1. Dar formato a un número
  2. Campo autonumérico
  3. Fecha y hora
  4. Cookies
  5. Convertir IP entre cadena y número

Propiedades

JavaScript, con sus cien mil implementaciones diferentes y mal documentadas, exige ponerse a adivinar con relativa frecuencia. Esta función nos permite obtener todos los atributos y métodos de cualquier objeto, por orden alfabético, en una bonita ventana emergente.

/*
 * Abre una ventana emergente con las propiedades del objeto indicado
 *
 * Argumentos:
 *
 * que - objeto o ID del objeto
 * [[filtro], ...] - cadenas(s) con los tipos de datos que se desea mostrar (por defecto: todos)
 *
 */

function propiedades(que){ // v2005-08-30
    /* Parámetros para la ventana emergente */
    var ancho=800;
    var alto=600;
    var css='body{font-family: sans-serif;} strong{color: navy;}';

    var obj=(typeof(que)=='string') ? document.getElementById(que) : que;
    var filtro=[];
    for(var i=1; i<arguments.length; i++){
        filtro[i-1]=escape(arguments[i]);
    }
    eval('var re_filtro=/^(' + filtro.join('|') + ')$/i;');


    var elementos=[];
    if(obj){
        for(var i in obj){
            try{
                var tipo=typeof(obj[i]);
            }catch(e){
                // Mozilla falla en algunos subíndices de obj
                var tipo='ERROR';
            }

            if(filtro.length==0 || re_filtro.test(tipo)){
                switch(tipo){
                    case 'ERROR':
                        var clave=i
                        var valor='';
                        break;
                    case 'function':
                        var clave=i + '()';
                        var valor='';
                        break;
                    default:
                        var clave=i;
                        var valor="=" + obj[i];
                }

                valor=valor.replace(/&/g, '&amp;');
                valor=valor.replace(/</g, '&lt;');
                valor=valor.replace(/>/g, '&gt;');

                linea = '[' + tipo + '] ' + '<strong>' + clave + '</strong>' + valor;
                elementos[elementos.length]=linea;
            }
        }
        elementos.sort();
    }


    var salida='<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">';
    salida+='<html>\n';
    salida+='<head><title>Propiedades</title>\n';
    salida+='<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-15">\n';
    salida+='<style type="text/css"><!--\n';
    salida+=css;
    salida+='--></style>\n';
    salida+='<body>\n';

    salida+='<h1>Propiedades ' + (filtro.length>0? '(' + filtro.join('|')+ ')' : '') + '</h1>\n';
    salida+='<ol>\n';

    for(var i in elementos){
        salida += '<li>' + elementos[i] + '</li>\n';
    }

    salida+='</ol></body></html>';

    var v=window.open('', '', 'width=' + ancho + ',height=' + alto + ',resizable=yes,scrollbars=yes');
    v.document.write(salida);
    v.document.close();
}

Ejemplo de uso

<p id="foo">El veloz murciélago hindú comía feliz cardillo y kiwi. La cigüeña tocaba el saxofón detrás del palenque de paja.</p>

<input type="button" onclick="propiedades(window)" value="propiedades(window)">
<input type="button" onclick="propiedades(document)" value="propiedades(document)">
<input type="button" onclick="propiedades(this)" value="propiedades(this)">
<input type="button" onclick="propiedades('foo')" value="propiedades('foo')">

<a href="http://www.google.es" onclick="propiedades(this, 'string'); return false;">Google</a>

Nota: cuidado al invocar la función poniendo la llamada directamente, no le suele gustar a los bloqueadores de ventanas emergentes.

Historial

2005-08-30
Arreglos cosméticos.
2005-08-29
Primera versión.

Esta página ha sido impresa el jueves 11 de marzo de 2010 (20:54:43 +0100) desde http://borrame.com/recortes/javascript/propiedades.html. La última vez que miré contenía HTML válido con CSS fresquito y si tiene flatas de ortografía ha sido sin querer.

borrame.com es el sitio anteriormente conocido como bits.demogracia.com (no confundir con Demogracia, que sólo pasaba por ahí).

© 2005-2010 by Álvaro G. Vicario (alvaro.es) • Burgos (España) • borrame.com