<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>mjcarrascosa.com &#187; JavaScript</title>
	<atom:link href="http://mjcarrascosa.com/tag/javascript/feed/" rel="self" type="application/rss+xml" />
	<link>http://mjcarrascosa.com</link>
	<description>Desarrollo web y otras hierbas</description>
	<lastBuildDate>Fri, 08 Jul 2011 07:41:10 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
			<item>
		<title>Autofocus en campos de formulario</title>
		<link>http://mjcarrascosa.com/autofocus-en-campos-de-formulario/</link>
		<comments>http://mjcarrascosa.com/autofocus-en-campos-de-formulario/#comments</comments>
		<pubDate>Mon, 23 May 2011 11:12:24 +0000</pubDate>
		<dc:creator>Manuel Jesús Carrascosa de la Blanca</dc:creator>
				<category><![CDATA[HTML 5]]></category>
		<category><![CDATA[JavaScript]]></category>
		<category><![CDATA[autofocus]]></category>

		<guid isPermaLink="false">http://mjcarrascosa.com/?p=732</guid>
		<description><![CDATA[Las webs pueden usar JavaScript para situar el foco en un campo concreto de un formulario, normalmente el primero, como por ejemplo hace Google. Para facilitar esto, HTML 5 introduce una nueva propiedad en los campos de formulario, la propiedad autofocus, que nos permite hacer que un campo de formulario tenga el foco por defecto. [...]]]></description>
			<content:encoded><![CDATA[<p>Las webs pueden usar JavaScript para situar el foco en un campo concreto de un formulario, normalmente el primero, como por ejemplo hace Google. Para facilitar esto, HTML 5 introduce una nueva propiedad en los campos de formulario, la propiedad autofocus, que nos permite hacer que un campo de formulario tenga el foco por defecto.</p>
<p>Veamos como se usa esta propiedad:</p>
<pre class="brush:html">&lt;!DOCTYPE html&gt;
&lt;html&gt;
&lt;head&gt;
 &lt;title&gt;Autofocus&lt;/title&gt;
&lt;/head&gt;
&lt;body&gt;
 &lt;form&gt;
 &lt;input type="text" name="buscar" id="buscar" autofocus/&gt; &lt;input type="submit" value="buscar"/&gt;
 &lt;/form&gt;
&lt;/body&gt;
&lt;/html&gt;</pre>
<p>Sencilla de usar, pero ¿qué pasa si el navegador no soporta esta propiedad? Podemos hacer uso de JavaScript para ello:</p>
<pre class="brush:html">&lt;!DOCTYPE html&gt;
&lt;html&gt;
&lt;head&gt;
 &lt;title&gt;Autofocus&lt;/title&gt;
&lt;/head&gt;
&lt;body&gt;
 &lt;form&gt;
 &lt;input type="text" name="buscar" id="buscar" autofocus/&gt; &lt;input type="submit" value="buscar"/&gt;
 &lt;script&gt;
 if( ! ("autofocus" in document.createElement( "input" ) ) )
 {
 document.getElementById( "buscar" ).focus();
 }
 &lt;/script&gt;
 &lt;/form&gt;
&lt;/body&gt;
&lt;/html&gt;</pre>
<p>Comprobamos si el elemento input soporta la propiedad &#8220;autofocus&#8221; y si no la soporta se asignamos el foco al elemento mediante JavaScript.</p>
<p>Si usamos jQuery como framework JavaScript podemos hacer:</p>
<pre class="brush:html">&lt;!DOCTYPE html&gt;
&lt;html&gt;
&lt;head&gt;
 &lt;title&gt;Autofocus&lt;/title&gt;
 &lt;script src="jquery.min.js"&gt;&lt;/script&gt;
 &lt;script&gt;
 $(document).ready(function() {
 if( ! ("autofocus" in document.createElement( "input" ) ) )
 {
 $( "#buscar" ).focus();
 }
 });
 &lt;/script&gt;
&lt;/head&gt;
&lt;body&gt;
 &lt;form&gt;
 &lt;input type="text" name="buscar" id="buscar" autofocus/&gt; &lt;input type="submit" value="buscar"/&gt;
 &lt;/form&gt;
&lt;/body&gt;
&lt;/html&gt;</pre>
<p>Como podemos es muy fácil implementar esta funcionalidad, tanto si el navegador soporta esta propiedad como si no. Como suele ser habitual esta funcionalidad no es una panacea que haya que implementar en todos los proyectos, dependerá de las características del mismo y tendremos que saber cuando es conveniente y cuando no utilizarla.</p>
]]></content:encoded>
			<wfw:commentRss>http://mjcarrascosa.com/autofocus-en-campos-de-formulario/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Tutorial de CKEditor. Parte IV.</title>
		<link>http://mjcarrascosa.com/tutorial-de-ckeditor-parte-iv/</link>
		<comments>http://mjcarrascosa.com/tutorial-de-ckeditor-parte-iv/#comments</comments>
		<pubDate>Sun, 06 Jun 2010 19:40:48 +0000</pubDate>
		<dc:creator>Manuel Jesús Carrascosa de la Blanca</dc:creator>
				<category><![CDATA[JavaScript]]></category>
		<category><![CDATA[Librerías]]></category>
		<category><![CDATA[CKEditor]]></category>
		<category><![CDATA[Editor WYSIWYG]]></category>
		<category><![CDATA[librería]]></category>
		<category><![CDATA[plantillas]]></category>

		<guid isPermaLink="false">http://mjcarrascosa.com/?p=614</guid>
		<description><![CDATA[Entre las funcionalidades de CKEditor se encuentra una muy interesante, la posibilidad de usar plantillas en el editor. Además es bastante fácil de implementar.  Vamos a ver como configurar nuestro CKEditor para que nos permita mostrar plantillas: &#60;html&#62; &#60;head&#62; &#60;title&#62;ckeditor test&#60;/title&#62; &#60;script src="ckeditor/ckeditor.js"&#62;&#60;/script&#62; &#60;script src="editor.js"&#62;&#60;/script&#62; &#60;/head&#62; &#60;body&#62; &#60;textarea id="editor"&#62;&#60;/textarea&#62; &#60;/body&#62; &#60;/html&#62; Esta es nuestra página [...]]]></description>
			<content:encoded><![CDATA[<p>Entre las funcionalidades de CKEditor se encuentra una muy interesante, la posibilidad de usar plantillas en el editor. Además es bastante fácil de implementar.  Vamos a ver como configurar nuestro CKEditor para que nos permita mostrar plantillas:</p>
<pre class="brush:html">&lt;html&gt;
  &lt;head&gt;
    &lt;title&gt;ckeditor test&lt;/title&gt;
    &lt;script src="ckeditor/ckeditor.js"&gt;&lt;/script&gt;
    &lt;script src="editor.js"&gt;&lt;/script&gt;
  &lt;/head&gt;
  &lt;body&gt;
    &lt;textarea id="editor"&gt;&lt;/textarea&gt;
  &lt;/body&gt;
&lt;/html&gt;</pre>
<p>Esta es nuestra página con el editor. Hemos añadido el script de ckeditor y otro más llamado editor.js. En ese archivo está el código siguiente:</p>
<pre class="brush:javascript">window.onload = function() {
  CKEDITOR.replace( 'editor',
  {
    toolbar : 'Full',
    templates_files : [ './templates.js' ]
  });
}</pre>
<p>Hemos añadido una barra completa para que aparezca el botón de plantilla aunque, esto no es estrictamente necesario, bastaba con añadir el botón Templates a la barra de herramientas, como vimos en la <a title="Tutorial de CKEditor. Parte II." href="http://mjcarrascosa.com/tutorial-de-ckeditor-parte-ii/">segunda parte del tutorial</a>. Vemos que hay una nueva propiedad (templates_files). Esta propiedad es un array en el que indicaremos los nombres de los ficheros donde definimos las plantillas. En este caso solo un archivo, llamado templates.js.</p>
<p>El archivo templates.js tendrá el siguiente código:</p>
<pre class="brush:javascript">// Registramos las plantillas
CKEDITOR.addTemplates( 'default',
{
  // La ruta donde están las imágenes de las plantillas
  imagesPath : CKEDITOR.getUrl( CKEDITOR.plugins.getPath( 'templates' ) + 'templates/images/' ),

  // Definición de las plantillas
  templates :
  [
    {
      title: 'Plantilla 1',
      image: 'template1.gif',
      description: 'Descripci&amp;oacute;n de la plantilla 1.',
      html:
        '&lt;h2&gt;Pantilla 1&lt;/h2&gt;' +
        '&lt;p&gt;Inserte el texto aqu&amp;iacute;.&lt;/p&gt;'
    },
    {
      title: 'Plantilla 2',
      html:
      '&lt;h3&gt;Plantilla 2&lt;/h3&gt;' +
      '&lt;p&gt;Inserte el texto aqu&amp;iacute;.&lt;/p&gt;'
    }
  ]
});</pre>
<p>Ahora vamos a la parte interesante. Para añadir plantillas llamamos al addTemplates, al que le pasamos un nombre y un objeto con los datos necesarios para mostrar las plantillas. El objeto tiene los campos imagePath, donde le indicamos la ruta de la imágenes que aparecerán como vista previa de la plantilla, y templates, un array de objetos que tienen los datos de la plantilla. Estos datos son:</p>
<ul>
<li><strong>title</strong>: Título de la plantilla.</li>
<li><strong>image</strong>: imagen de vista previa de la plantilla.</li>
<li><strong>description</strong>: descripción de la plantilla.</li>
<li><strong>html</strong>: La plantilla propiamente dicha.</li>
</ul>
<p>De esta sencilla forma podemos añadir plantillas a nuestro editor. Cuando pulsemos sobre el botón de plantillas nos aparecerá la siguiente ventana:</p>
<p><a href="http://mjcarrascosa.com/wp-content/uploads/2010/06/plantillas.jpg"><img class="alignnone size-medium wp-image-645" title="plantillas" src="http://mjcarrascosa.com/wp-content/uploads/2010/06/plantillas-300x299.jpg" alt="" width="300" height="299" /></a></p>
<p>Ahora solo toca seleccionar nuestra plantilla y esta aparecerá como contenido de nuestro editor, reemplazándolo o añadiéndolo según hayamos indicado en la ventana,</p>
]]></content:encoded>
			<wfw:commentRss>http://mjcarrascosa.com/tutorial-de-ckeditor-parte-iv/feed/</wfw:commentRss>
		<slash:comments>12</slash:comments>
		</item>
		<item>
		<title>Como utilizar Lightbox 2</title>
		<link>http://mjcarrascosa.com/como-utilizar-lightbox-2/</link>
		<comments>http://mjcarrascosa.com/como-utilizar-lightbox-2/#comments</comments>
		<pubDate>Thu, 11 Mar 2010 13:56:32 +0000</pubDate>
		<dc:creator>Manuel Jesús Carrascosa de la Blanca</dc:creator>
				<category><![CDATA[JavaScript]]></category>
		<category><![CDATA[Librerías]]></category>
		<category><![CDATA[imágenes]]></category>
		<category><![CDATA[librería]]></category>
		<category><![CDATA[Lightbox]]></category>

		<guid isPermaLink="false">http://mjcarrascosa.com/?p=506</guid>
		<description><![CDATA[Lightbox es un script escrito en JavaScript que nos permite mostrar una &#8220;popup&#8221; con una imagen de una forma bastante elegante. Para hacer uso de Lightbox lo primero que vamos a hacer es descargarnos el script desde su página web. Una vez que tenemos esto ya podemos incluirlo en nuestra página. Lo primero que tendremos [...]]]></description>
			<content:encoded><![CDATA[<p><a title="Lightbox 2" href="http://www.lokeshdhakar.com/projects/lightbox2/">Lightbox</a> es un script escrito en JavaScript que nos permite mostrar una &#8220;popup&#8221; con una imagen de una forma bastante elegante. Para hacer uso de Lightbox lo primero que vamos a hacer es descargarnos el script desde <a title="Página de descarga de Lightbox 2" href="http://www.huddletogether.com/projects/lightbox2/#download">su página web</a>.</p>
<p>Una vez que tenemos esto ya podemos incluirlo en nuestra página. Lo primero que tendremos que incluir es el framework <strong>Prototype</strong> y la librería de efectos <strong>Scriptaculous</strong>, ambas vienen con <strong>Lightbox</strong>, ya que <strong>Lightbox </strong>hace uso de estas. Una vez incluidas añadiremos también el script de <strong>Lightbox</strong>:</p>
<pre class="brush:html">&lt;script type="text/javascript" src="js/prototype.js"&gt;&lt;/script&gt;
&lt;script type="text/javascript" src="js/scriptaculous.js?load=effects,builder"&gt;&lt;/script&gt;
&lt;script type="text/javascript" src="js/lightbox.js"&gt;&lt;/script&gt;</pre>
<p>Tras añadir los script tenemos que incluir el archivo con los estilos de <strong>Lightbox</strong>:</p>
<pre class="brush:html">&lt;link rel="stylesheet" href="css/lightbox.css" type="text/css" media="screen" /&gt;
</pre>
<p>Una vez hecho esto ya tenemos <strong>Lightbox</strong> listo para usarlo. Para ello tendremos que añadir el atributo <em>rel</em> con el valor <em>&#8220;lightbox&#8221;</em> al enlace que queremos que muestre nuestra imagen. Veamos un ejemplo:</p>
<pre class="brush:html">&lt;a href="images/image1.jpg" rel="lightbox" title="Imagen 1"&gt;imagen 1&lt;/a&gt;
</pre>
<p>De ese modo al hacer click sobre el enlace se abrirá la imagen indicada en la propiedad <em>href</em>, pero lo hará mediante <strong>Lightbox</strong>. Si a la etiqueta <em>&lt;a&gt;</em> le añadimos el atributo title, en el ejemplo está, <strong>Lightbox</strong> nos mostrará también el título.</p>
<p>Podemos crear conjuntos añadiendo el nombre del conjunto entre corchetes en el atributo rel, de la siguiente forma:</p>
<pre class="brush:html">&lt;a href="images/image1.jpg" rel="lightbox[set]"&gt;imagen 1&lt;/a&gt;
&lt;a href="images/image2.jpg" rel="lightbox[set]"&gt;imagen 2&lt;/a&gt;
&lt;a href="images/image3.jpg" rel="lightbox[set]"&gt;imagen 3&lt;/a&gt;
</pre>
<p>Como se ha podido ver con <strong>Lightbox</strong> podemos mostrar nuestras imágenes de una forma más elegante que mostrando solo la imagen en el navegador.</p>
<p>Podéis descargar un pequeño ejemplo en el siguiente enlace:</p>
<p><a href="http://mjcarrascosa.com/wp-content/uploads/2010/03/lightbox-demo.zip">Demo de LightBox 2</a></p>
]]></content:encoded>
			<wfw:commentRss>http://mjcarrascosa.com/como-utilizar-lightbox-2/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Introducción a CKFinder</title>
		<link>http://mjcarrascosa.com/introduccion-a-ckfinder/</link>
		<comments>http://mjcarrascosa.com/introduccion-a-ckfinder/#comments</comments>
		<pubDate>Mon, 30 Nov 2009 22:37:35 +0000</pubDate>
		<dc:creator>Manuel Jesús Carrascosa de la Blanca</dc:creator>
				<category><![CDATA[Herramientas]]></category>
		<category><![CDATA[JavaScript]]></category>
		<category><![CDATA[Librerías]]></category>
		<category><![CDATA[CKFinder]]></category>
		<category><![CDATA[librería]]></category>

		<guid isPermaLink="false">http://mjcarrascosa.com/?p=437</guid>
		<description><![CDATA[CKFinder es un navegador de archivos basado en AJAX muy potente y fácil de usar. Su sencilla interfaz lo hace intuitivo y rápido de aprender a todo tipo de usuarios, desde los avanzados a los noveles. Lo podemos descargar desde su página web, donde está preparado para varios lenguajes y/o tecnologías: PHP, ASP, ASP.Net y [...]]]></description>
			<content:encoded><![CDATA[<p><a title="CKFinder" href="http://ckfinder.com/">CKFinder</a> es un navegador de archivos basado en AJAX muy potente y fácil de usar. Su sencilla interfaz lo hace intuitivo y rápido de aprender a todo tipo de usuarios, desde los avanzados a los noveles. Lo podemos descargar desde su página web, donde está preparado para varios lenguajes y/o tecnologías: PHP, ASP, ASP.Net y ColdFusion.</p>
<div id="attachment_438" class="wp-caption aligncenter" style="width: 512px"><a href="http://mjcarrascosa.com/wp-content/uploads/2009/12/ckfinder.jpg"><img class="size-full wp-image-438" title="CKFinder Demo" src="http://mjcarrascosa.com/wp-content/uploads/2009/12/ckfinder.jpg" alt="Así se ve CKFinder" width="502" height="237" /></a><p class="wp-caption-text">Así se ve CKFinder</p></div>
<p>Básicamente esto es lo que dice la <a title="What is CKFinder" href="http://ckfinder.com/what-is-ckfinder">web de CKFinder</a>. También nos aparece el típico listado de características, de las cuales las más destacables son:</p>
<ul>
<li>Navegador en árbol.</li>
<li>Thumbnails de alta calidad.</li>
<li>Multilenguaje.</li>
<li>Menús contextuales.</li>
<li>Control total por parte del desarrollador.</li>
<li>Control total para el usuario.</li>
<li>Ligero.</li>
<li>Respuesta rápida, sin refrescos.</li>
<li>Subida segura de archivos.</li>
<li>Código fuente completo incluido.</li>
<li><strong>Fácil integración con el editor CKEditor.</strong></li>
</ul>
<p>Observaréis que la última característica la he puesto en negrita. Esto es así porque esta herramienta nos va a servir para añadir algunas opciones nuevas a nuestros editores basados en CKEditor, lo que veremos en la próxima entrega del tutorial de CKEditor.</p>
]]></content:encoded>
			<wfw:commentRss>http://mjcarrascosa.com/introduccion-a-ckfinder/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Listando los métodos y propiedades de un objeto en JavaScript</title>
		<link>http://mjcarrascosa.com/listando-los-metodos-y-propiedades-de-un-objeto-en-javascript/</link>
		<comments>http://mjcarrascosa.com/listando-los-metodos-y-propiedades-de-un-objeto-en-javascript/#comments</comments>
		<pubDate>Thu, 26 Nov 2009 12:05:01 +0000</pubDate>
		<dc:creator>Manuel Jesús Carrascosa de la Blanca</dc:creator>
				<category><![CDATA[JavaScript]]></category>

		<guid isPermaLink="false">http://mjcarrascosa.com/?p=430</guid>
		<description><![CDATA[En ocasiones nos puede interesar saber las propiedades y los métodos que tiene un objeto, por ejemplo cuando estamos depurando. Para ello podemos hacer uso de la siguiente función: function inspeccionar(obj) { var msg = ''; for (var property in obj) { if (typeof obj[property] == 'function') { var inicio = obj[property].toString().indexOf('function'); var fin = [...]]]></description>
			<content:encoded><![CDATA[<p>En ocasiones nos puede interesar saber las propiedades y los métodos que tiene un objeto, por ejemplo cuando estamos depurando. Para ello podemos hacer uso de la siguiente función:</p>
<pre class="brush:javascript">function inspeccionar(obj)
{
  var msg = '';

  for (var property in obj)
  {
    if (typeof obj[property] == 'function')
    {
      var inicio = obj[property].toString().indexOf('function');
      var fin = obj[property].toString().indexOf(')')+1;
      var propertyValue=obj[property].toString().substring(inicio,fin);
      msg +=(typeof obj[property])+' '+property+' : '+propertyValue+' ;\n';
    }
    else if (typeof obj[property] == 'unknown')
    {
      msg += 'unknown '+property+' : unknown ;\n';
    }
    else
    {
      msg +=(typeof obj[property])+' '+property+' : '+obj[property]+' ;\n';
    }
  }
  return msg;
}</pre>
<p>La función nos devolverá una cadena que contiene una lista con todos los métodos y propiedades del objeto, así como sus tipos y valores.</p>
<p>Podemos madificarla para que nos devuelva, por ejemplo, un array de objetos, lo que nos permitiría procesarlo después. Veamos como quedaría:</p>
<pre class="brush:javascript">function inspeccionar(obj)
{
  var msg = new Array();

  for (var property in obj)
  {
    if (typeof obj[property] == 'function')
    {
      var inicio = obj[property].toString().indexOf('function');
      var fin = obj[property].toString().indexOf(')')+1;
      var propertyValue=obj[property].toString().substring(inicio,fin);
      msg[msg.length] = {'type' : (typeof obj[property]), 'name' : property, 'value' : propertyValue};
    }
    else if (typeof obj[property] == 'unknown')
    {
      msg[msg.length] = {'type' : 'unknown', 'name' : property, value : 'unknown'};
    }
    else
    {
      msg[msg.length] ={'type' : (typeof obj[property]), 'name' : property, 'value' : obj[property]};
    }
  }
  return msg;
}</pre>
<p>Con esta versión podríamos procesar la lista para mostrarla con el formato que más nos guste. Para ello recorreriamos el array devuelto y hariamos lo deseado con cada uno de los elementos. Cada elemento sería un objeto con tres propiedades:</p>
<ul>
<li><strong>type</strong>: que contiene el tipo de dato.</li>
<li><strong>name</strong>: contiene el nombre de la propiedad o método.</li>
<li><strong>value</strong>: contiene el valor de la propiedad o el prototipo de la función.</li>
</ul>
]]></content:encoded>
			<wfw:commentRss>http://mjcarrascosa.com/listando-los-metodos-y-propiedades-de-un-objeto-en-javascript/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
	</channel>
</rss>

