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

Canales RSS

Lo más fresco

  1. Vaciar un esquema de Oracle Nuevo
  2. Conectarse a MySQL con PDO Nuevo
  3. Reiniciar secuencia en Oracle Modificado
  4. Fechas automáticas en Oracle Modificado
  5. Campo autonumérico en Oracle Modificado
  6. Dígito de control de una cuenta bancaria Modificado

Sugerencias del chef

Lo más visitado

  1. Dar formato a un número
  2. Fecha y hora
  3. Rotar logs en Windows
  4. Reiniciar secuencia
  5. Campo autonumérico
Compartir esta página

Propiedades

Aviso: este recorte es extremadamamente viejo, de una época en que ni siquiera existía Firebug. Contémplese básicamente como curiosidad histórica.

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 lunes 20 de mayo de 2013 (02:47:54 +0200) 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-2013 by Álvaro G. Vicario (alvaro.es) • Burgos (España) • borrame.com