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

Canales RSS

Lo más fresco

  1. Bookmarklets Nuevo
  2. Recetario básico para CakePHP/2 Nuevo
  3. Certificado auto-firmado Nuevo

Sugerencias del chef

Lo más visitado

  1. Fecha y hora
  2. Dar formato a un número
  3. Reiniciar secuencia
  4. Vaciar un esquema
  5. Certificado auto-firmado
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 sábado 23 de septiembre de 2017 (02:23:31 +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-2017 by Álvaro González (alvaro.es) • Burgos (España) • borrame.com