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

Canales RSS

Lo más fresco

  1. Reemplazar selección con JavaScript Nuevo
  2. ¿Esta IP pertenece a esta red? Modificado
  3. Mozilla Firefox Modificado

Sugerencias del chef

Lo más visitado

  1. Fecha y hora
  2. Dar formato a un número
  3. Rotar logs en Windows
  4. Eliminar formato en Excel
  5. Caché del navegador
Compartir esta página

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 lunes 21 de mayo de 2012 (03:16:32 +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-2011 by Álvaro G. Vicario (alvaro.es) • Burgos (España) • borrame.com