<?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>ZonaW &#187; Scripts Javascript</title>
	<atom:link href="http://www.zonaw.com/scripts-javascript/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.zonaw.com</link>
	<description>Información práctica, consejos y recursos de interés para webmasters, desarrolladores y diseñadores web de todos los niveles.</description>
	<lastBuildDate>Mon, 14 May 2012 08:54:52 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.3.1</generator>
		<item>
		<title>Speech Javascript API</title>
		<link>http://www.zonaw.com/speech-javascript-api/</link>
		<comments>http://www.zonaw.com/speech-javascript-api/#comments</comments>
		<pubDate>Fri, 02 Mar 2012 16:15:00 +0000</pubDate>
		<dc:creator>ZonaW</dc:creator>
				<category><![CDATA[APIs Web]]></category>
		<category><![CDATA[Scripts Javascript]]></category>
		<category><![CDATA[api]]></category>
		<category><![CDATA[HTML]]></category>
		<category><![CDATA[w3c]]></category>
		<category><![CDATA[web]]></category>

		<guid isPermaLink="false">http://www.zonaw.com/?p=1824</guid>
		<description><![CDATA[Desde la página de W3C publican un borrador llevado a cabo por el equipo de Google, con especificacione para dotar de voz y hacer que nuestras páginas &#8220;nos entiendan&#8221;. Con esto se intenta conseguir poder hablar con las páginas web y que estas nos respondan, muy al estilo del modelo Siri para iPhone. &#160; Esta [...]]]></description>
			<content:encoded><![CDATA[<p>Desde la página de <strong>W3C</strong> publican un <em><a href="http://lists.w3.org/Archives/Public/public-webapps/2011OctDec/att-1696/speechapi.html">borrador</a></em> llevado a cabo por el equipo de Google, con especificacione para <strong>dotar de voz</strong> y hacer que nuestras páginas &#8220;nos entiendan&#8221;. Con esto se intenta conseguir <em>poder hablar con las páginas web y que estas nos respondan</em>, muy al estilo del modelo Siri para iPhone.</p>
<p>&nbsp;</p>
<p><a href="http://www.zonaw.com/wp-content/uploads/2012/03/Speech-JavaScript-API.png"><img class="aligncenter size-full wp-image-1827" title="Speech-JavaScript-API" src="http://www.zonaw.com/wp-content/uploads/2012/03/Speech-JavaScript-API.png" alt="Speech-JavaScript-API" width="389" height="153" /></a></p>
<p>Esta <strong>API</strong> consta de 2 interfaces:</p>
<ul>
<li><strong>SpeechReco()</strong>, permite grabar la voz del usuario directamente desde el navegador.</li>
<li><strong>TTS()</strong>, permite convertir texto en voz directamente.</li>
</ul>
<p>La siguiente es una <em><a href="http://www.anieto2k.com/2012/01/08/speech-javascript-api-habla-con-las-paginas-web/">muestra</a></em> de cómo se podrian adaptar nuestro site a estas tecnologías:</p>
<p>&nbsp;</p>
<h2>SpeechReco</h2>
<blockquote>
<pre>&lt;script type="text/javascript"&gt;
	var sr = new SpeechReco(); // Nuevo interface
	sr.onresult = function(event) {
	  var q = document.getElementById("q");
	  q.value = event.result[0].transcript;
// Devolvemos la transcripción del mensaje
	  q.form.submit();
	}
  &lt;/script&gt;
  &lt;form action="http://www.example.com/search"&gt;
  &lt;input type="search" id="q" name="q"/&gt;
  &lt;input type="button" value="Speak" onclick="sr.start()"/&gt;
// Iniciamos la grabación
  &lt;/form&gt;</pre>
</blockquote>
<h2> TTS</h2>
<blockquote>
<pre>&lt;script type="text/javascript"&gt;
	 var tts = new TTS(); //Nuevo interface
	 function speak(text, lang) {
		tts.text = text; // Indicamos el texto
		tts.lang = lang; // Indicamos el idioma
		tts.play(); // Hacemos hablar a nuestro navegador
	 }
	 speak("Hello world.", "en-US"); // Hola mundo
  &lt;/script&gt;</pre>
</blockquote>
<p>&nbsp;</p>
]]></content:encoded>
			<wfw:commentRss>http://www.zonaw.com/speech-javascript-api/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Mostrar el contenido de un objeto (Javascript)</title>
		<link>http://www.zonaw.com/mostrar-el-contenido-de-un-objeto-javascript/</link>
		<comments>http://www.zonaw.com/mostrar-el-contenido-de-un-objeto-javascript/#comments</comments>
		<pubDate>Thu, 02 Feb 2012 15:46:43 +0000</pubDate>
		<dc:creator>ZonaW</dc:creator>
				<category><![CDATA[Programación Web]]></category>
		<category><![CDATA[Scripts Javascript]]></category>
		<category><![CDATA[javascript]]></category>
		<category><![CDATA[script]]></category>

		<guid isPermaLink="false">/?p=1709</guid>
		<description><![CDATA[Para mostrar el contenido completo de un objeto, en Firefox, se puede utilizar la siguiente sentencia: alert(object.toSource()); También se puede acceder a todos los elementos de un objeto mediante un bucle FOR EACH (utilizado para recorrer los elementos de una estructura de datos). En la siguiente sentencia MostrarObjeto monstrará un alert() que muestra todas las [...]]]></description>
			<content:encoded><![CDATA[<p>Para <strong>mostrar el contenido completo de un objeto</strong>, en Firefox, se puede utilizar la siguiente sentencia:</p>
<blockquote><p><code>alert(object.toSource());<br />
</code></p></blockquote>
<p>También se puede acceder a todos los elementos de un objeto mediante un bucle <strong>FOR EACH</strong> (utilizado para recorrer los elementos de una estructura de datos). En la siguiente sentencia <strong>MostrarObjeto </strong>monstrará un alert() que muestra todas las propiedades y los valores respectivos.</p>
<blockquote><p>function ImprimirObjeto(o) {<br />
var salida = &#8221;;<br />
for (var p in o) {<br />
salida += p + &#8216;: &#8216; + o[p] + &#8216;\n&#8217;;<br />
}<br />
alert(salida);<br />
}</p></blockquote>
<p>Por ejemplo:<code><br />
</code></p>
<blockquote><p><code>&lt;head&gt;<br />
&lt;title&gt;Mostrar el contenido de un objeto&lt;/title&gt;<br />
&lt;script type="text/javascript"&gt;<br />
function MostrarObjeto(o) {<br />
var salida = '';<br />
for (var p in o) {<br />
salida += p + ': ' + o[p] + '\n';<br />
}<br />
alert(salida);<br />
}<br />
var Objeto = {'contador1': 1, 'contador2': 2};<br />
&lt;/script&gt;<br />
&lt;/head&gt;<br />
&lt;body&gt;<br />
&lt;a href="javascript:ImprimirObjeto(Objeto);"&gt;Muestra&lt;/a&gt;<br />
&lt;/body&gt;</code></p></blockquote>
<blockquote><p><code> </code></p></blockquote>
<p><code> </code></p>
]]></content:encoded>
			<wfw:commentRss>http://www.zonaw.com/mostrar-el-contenido-de-un-objeto-javascript/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Reproductor de video de código abierto basado en HTML y Javascript</title>
		<link>http://www.zonaw.com/reproductor-de-video-de-codigo-abierto-basado-en-html-y-javascript/</link>
		<comments>http://www.zonaw.com/reproductor-de-video-de-codigo-abierto-basado-en-html-y-javascript/#comments</comments>
		<pubDate>Tue, 10 Jan 2012 09:58:57 +0000</pubDate>
		<dc:creator>ZonaW</dc:creator>
				<category><![CDATA[Scripts Javascript]]></category>
		<category><![CDATA[Tags HTML]]></category>
		<category><![CDATA[HTML]]></category>
		<category><![CDATA[javascript]]></category>
		<category><![CDATA[reproductor]]></category>
		<category><![CDATA[video]]></category>

		<guid isPermaLink="false">/?p=1624</guid>
		<description><![CDATA[Video Player Sample es el nombre del reproductor de video de código abierto que a lanzado el equipo de Chrome Web. Ofrece soporte para múltiples formatos de video como: MP4 (video H.254 y AAC audio), OGG/OGV (video Theora y Vorbis audio), WEBM (video VP8 y Vorbis audio) y es compatible con las últimas versiones de [...]]]></description>
			<content:encoded><![CDATA[<p><a href="http://www.zonaw.com/wp-content/uploads/2012/01/Video-Player-Sample.jpg"><img class="aligncenter size-full wp-image-1626" title="Video Player Sample" src="http://www.zonaw.com/wp-content/uploads/2012/01/Video-Player-Sample.jpg" alt="Video-Player-Sample" width="570" height="177" /></a></p>
<p><strong>Video Player Sample</strong> es el nombre del <strong>reproductor de video de código abierto</strong> que a lanzado el equipo de Chrome Web. Ofrece soporte para múltiples formatos de video como: <strong>MP4</strong> (video H.254 y AAC audio), <strong>OGG/OGV</strong> (video Theora y Vorbis audio), <strong>WEBM</strong> (video VP8 y Vorbis audio) y es compatible con las últimas versiones de los navegadores: Safari,  Google Chrome, Firefox 4+, Internet Explorer 7+, Opera 11.</p>
<p>También nos ofrece la posibilidad de <strong>compartir </strong>nuestros video a través de las redes sociales más conocidas (Twitter, Facebook y Google+), aunque no dispone de la opción de ofrecer el <em>código </em>&lt;<em>embed</em>&gt; para que otros usuarios puedan incrustar el reprocuctor en su web.</p>
<p>Toda la configuración para la reproducción se realiza mediante los ficheros: <strong>config.json</strong> y <strong>data.json</strong> (puedes encontrar toda la información sobre su configuración en <a href="http://video-player-sample.appspot.com/#/shows/example-category-1/">Appspot</a>). El proceso principal es el <strong>ApplicationController</strong> que carga los ficheros JSON, episodios y datos de categorías, registra los componentes y controladores específicos y  establece los enlaces.</p>
<p>Lo mejor es que puedes ver su <a href="http://code.google.com/p/video-player-sample/">código fuente</a> y utilizarlo bajo la <strong>licencia libre</strong> (Apache License v2.0). Un buen ejemplo de uso es la creación de un <strong>portal de videos</strong>.</p>
<p>Ver demostración de <a href="http://video-player-sample.appspot.com/#/shows/example-category-1/">Video Player Sample</a>.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.zonaw.com/reproductor-de-video-de-codigo-abierto-basado-en-html-y-javascript/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Selectivizr: selectores CSS3 en Internet Explorer</title>
		<link>http://www.zonaw.com/selectivizr-selectores-css3-en-internet-explorer/</link>
		<comments>http://www.zonaw.com/selectivizr-selectores-css3-en-internet-explorer/#comments</comments>
		<pubDate>Tue, 03 Jan 2012 15:45:57 +0000</pubDate>
		<dc:creator>ZonaW</dc:creator>
				<category><![CDATA[Programación Web]]></category>
		<category><![CDATA[Scripts Javascript]]></category>
		<category><![CDATA[css3]]></category>
		<category><![CDATA[diseño]]></category>
		<category><![CDATA[frameworks]]></category>
		<category><![CDATA[internet explorer]]></category>
		<category><![CDATA[javascript]]></category>
		<category><![CDATA[selectores]]></category>

		<guid isPermaLink="false">/?p=1613</guid>
		<description><![CDATA[Ya sabemos el poco soporte que ofrecen las versiones de Internet Explorer más antiguas (desde la versión 6 hasta la 8) en cuanto a CSS3 se refiere, por ejemplo, uno de sus puntos débiles son los selectores que nos ofrecen. Ya en otras ocasiones hemos nombrado la herramienta de Modernizr, para ayudarnos a detectar nuevas [...]]]></description>
			<content:encoded><![CDATA[<p>Ya sabemos el poco soporte que ofrecen las <strong>versiones de Internet Explorer</strong> más antiguas (desde la versión 6 hasta la 8) en cuanto a <strong>CSS3 </strong>se refiere, por ejemplo, uno de sus puntos débiles son los<strong> selectores</strong> que nos ofrecen.</p>
<p>Ya en otras ocasiones hemos nombrado la herramienta de <a href="http://www.htmlcinco.com/detectar-soporte-html5-css3/">Modernizr</a>, para ayudarnos a <strong>detectar nuevas funcionalidades de HTML5 y CSS3</strong> que soporta el navegador de cada usuario, y de esta forma poder escoger qué hacer. En el caso de que no lo hagas, gracias a <strong><a href="http://selectivizr.com/" target="_blank">Selectivizr.com</a></strong> podemos <strong>utilizar selectores de CSS3</strong> en las versiones de Internet Explorer desde la 6 hasta la 8.</p>
<h3>¿Cómo utilizar Selectivizr?</h3>
<p>Su único requisito es que tenemos que utilizar alguno de  los  siguientes frameworks de javascript: jQuery, Dojo, Prototype,  Yahoo!,  DOMAssistant, MooTools y NWMatcher.</p>
<p>Por ejmplo, en el caso de querer utilizarlo con jQuery, sólo tendríamos que añadir el siguiente código en la cabecera &lt;<em>head&gt; </em>de nuestra web.</p>
<blockquote>
<div>&lt;script type=&#8221;text/javascript&#8221; src=&#8221;jquery.js&#8221;&gt;&lt;/script&gt;<br />
&lt;!&#8211;[if (gte IE 6)&amp;(lte IE 8)]&gt;<br />
&lt;script type=&#8221;text/javascript&#8221; src=&#8221;selectivizr.js&#8221;&gt;&lt;/script&gt;<br />
&lt;noscript&gt;&lt;link rel=&#8221;stylesheet&#8221; href=&#8221;[fallback css]&#8221; /&gt;&lt;/noscript&gt;<br />
&lt;![endif]&#8211;&gt;</div>
</blockquote>
<div>Dicho de otra forma, la llamada al archivo js de Selectivizr tiene que ir después del <em>script </em>que llama a la librería qué utilicemos (jQuery para este ejemplo). Por otro lado tenemos el elemento <em>noscript</em>, con una llamada al <em>“fallback css”</em>, que vendría a ser un archivo CSS con estilos en el caso que el usuario no tenga javascript habilitado en su navegador.</div>
<div>
<p>Gracias a Selectivizr a partir de ahora nuestra web podrá utilizar libremente 19 pseudo-clases (<em>:empty</em>, <em>:checked</em>, <em>:not</em>, etc), 2 pseudo-elementos (<em>::first-line</em> y <em>::first-letter</em>) y cualquier selector de atributo(<em>[attr]</em>, <em>[attr=]</em>, <em>[attr*=]</em>, etc).</p>
</div>
]]></content:encoded>
			<wfw:commentRss>http://www.zonaw.com/selectivizr-selectores-css3-en-internet-explorer/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Mostrar alertas y notificaciones en tu web con Humane.Js</title>
		<link>http://www.zonaw.com/humane-js-alertas-notificaciones-en-tu-web/</link>
		<comments>http://www.zonaw.com/humane-js-alertas-notificaciones-en-tu-web/#comments</comments>
		<pubDate>Fri, 16 Dec 2011 12:04:51 +0000</pubDate>
		<dc:creator>ZonaW</dc:creator>
				<category><![CDATA[Accesibilidad Web]]></category>
		<category><![CDATA[Herramientas Diseño]]></category>
		<category><![CDATA[Scripts Javascript]]></category>
		<category><![CDATA[accesibilidad]]></category>
		<category><![CDATA[diseño]]></category>
		<category><![CDATA[framework]]></category>
		<category><![CDATA[javascript]]></category>

		<guid isPermaLink="false">/?p=1565</guid>
		<description><![CDATA[Hace unos años la única forma que tenían los sitios web de interactuar con los usuarios era por medio de las molestas e intrusivas ventanas modales en Javascript. Con la llegada de las nuevas versiones de navegadores, estos comenzaron a incluir las ventanas dentro de los mismos navegadores, evitando de este modo las molestas alertas [...]]]></description>
			<content:encoded><![CDATA[<p>Hace unos años la única forma que tenían los sitios web de interactuar con los usuarios era por medio de las molestas e intrusivas ventanas <strong>modales en Javascript</strong>. Con la llegada de las nuevas versiones de navegadores, estos comenzaron a incluir las ventanas dentro de los mismos navegadores, evitando de este modo las molestas alertas que no nos permitian realizar ninguna otra acción, hasta que Aceptásemos o Cancelásemos dicho aviso.</p>
<p><a href="http://www.zonaw.com/wp-content/uploads/2011/12/humanejs.gif"><img class="aligncenter size-full wp-image-1566" title="humanejs - notificaciones web" src="http://www.zonaw.com/wp-content/uploads/2011/12/humanejs.gif" alt="humanejs" width="480" height="169" /></a></p>
<p>Ahora <strong><a title="HumaneJs" href="http://wavded.github.com/humane-js/">HumaneJs</a></strong> nos presenta una solución mejorada para <strong>generar alertas y notificaciones</strong> en nuestra web por medio de un framework Javascript. Sus características principales son:</p>
<ul>
<li>Sencillez para incorporarlo en nuestro proyecto, ya que no necesita de ninguna librería para  funcionar.</li>
<li>Se utilizan animaciones CSS y cuando no son soportadas, animaciones Javascript.</li>
<li>Se permiten varios parámetros de configuracion para los mensajes como: tiempo que tarda en desaparecer, desaparición por acción del  usuario,  cerrado por click y forzar la aparición de nuevas  notificaciones.</li>
<li>Se incluyen varios diseños para configurar su apariencia, además se permiten crear diseños personalizados por medio de <a title="Stylus" href="http://learnboost.github.com/stylus/">Stylus</a>.</li>
<li>Soporte para los siguientes navegadores: Internet Explorer 7+, Firefox 3+, Chrome 9+, Safari 3+, Opera 10+ y en fase Beta: iOS y Android.</li>
</ul>
]]></content:encoded>
			<wfw:commentRss>http://www.zonaw.com/humane-js-alertas-notificaciones-en-tu-web/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Añadir efecto nieve en tu web</title>
		<link>http://www.zonaw.com/efecto-nieve-en-tu-web/</link>
		<comments>http://www.zonaw.com/efecto-nieve-en-tu-web/#comments</comments>
		<pubDate>Thu, 15 Dec 2011 09:31:41 +0000</pubDate>
		<dc:creator>ZonaW</dc:creator>
				<category><![CDATA[Scripts Javascript]]></category>
		<category><![CDATA[Tags HTML]]></category>
		<category><![CDATA[diseño]]></category>
		<category><![CDATA[efecto]]></category>
		<category><![CDATA[javascript]]></category>
		<category><![CDATA[trucos]]></category>

		<guid isPermaLink="false">/?p=1558</guid>
		<description><![CDATA[La navidad está cada vez más cerca y con ella la oportunidad que tienen muchos webmasters de decorar sus webs para la ocasión, ya sea añadiendo elementos navideños al logo de nuestros sites, como: Papá Noel, trineos, gorros navideños, dulces&#8230; y sobre todo nieve, mucha nieve. Aunque pueda parecer cosa del pasado, añadir el efecto [...]]]></description>
			<content:encoded><![CDATA[<p>La navidad está cada vez más cerca y con ella la oportunidad que tienen muchos webmasters de <strong>decorar sus webs</strong> para la ocasión, ya sea añadiendo elementos navideños al logo de nuestros sites, como: Papá Noel, trineos, gorros navideños, dulces&#8230; y sobre todo nieve, <strong>mucha nieve</strong>.</p>
<p>Aunque pueda parecer cosa del pasado, <strong>añadir el efecto nieve a nuestra web</strong>, parece que vuvleve a estar más de moda que nunca este año, después de encontrarse el siguiente huevo de pascua en Google, &#8216;<a href="http://goo.gl/N4B47">Let it snow</a>&#8216; (&#8216;Deja que nieve&#8217;)</p>
<p>Para conseguir un <strong>efecto tipo tipo nieve en nuestro site</strong> tendremos que copiar el siguiente <strong>código Javascript</strong> justo después de la etiqueta <em>&lt;body&gt; </em>de nuestro site.</p>
<blockquote><p>&lt;script language=&#8221;JavaScript1.2&#8243;&gt;</p>
<p>//Configurar la ruta de la imagen<br />
var snowsrc=&#8221;nieve1.gif&#8221;<br />
// Configurar el tipo de nieve<br />
var no = 10;</p>
<p>var ns4up = (document.layers) ? 1 : 0; // browser sniffer<br />
var ie4up = (document.all) ? 1 : 0;<br />
var ns6up = (document.getElementById&amp;&amp;!document.all) ? 1 : 0;</p>
<p>var dx, xp, yp; // coordinate and position variables<br />
var am, stx, sty; // amplitude and step variables<br />
var i, doc_width = 800, doc_height = 600;</p>
<p>if (ns4up||ns6up) {<br />
doc_width = self.innerWidth;<br />
doc_height = self.innerHeight;<br />
} else if (ie4up) {<br />
doc_width = document.body.clientWidth;<br />
doc_height = document.body.clientHeight;<br />
}</p>
<p>dx = new Array();<br />
xp = new Array();<br />
yp = new Array();<br />
am = new Array();<br />
stx = new Array();<br />
sty = new Array();</p>
<p>for (i = 0; i &lt; no; ++ i) {<br />
dx[i] = 0; // set coordinate variables<br />
xp[i] = Math.random()*(doc_width-50); // set position variables<br />
yp[i] = Math.random()*doc_height;<br />
am[i] = Math.random()*20; // set amplitude variables<br />
stx[i] = 0.02 + Math.random()/10; // set step variables<br />
sty[i] = 0.7 + Math.random(); // set step variables<br />
if (ns4up) { // set layers<br />
if (i == 0) {<br />
document.write(&#8220;&lt;layer name=\&#8221;dot&#8221;+ i +&#8221;\&#8221;     left=\&#8221;15\&#8221; top=\&#8221;15\&#8221; visibility=\&#8221;show\&#8221;&gt;&lt;a     href=\&#8221;http://dynamicdrive.com/\&#8221;&gt;&lt;img src=&#8217;&#8221;+snowsrc+&#8221;&#8216;     border=\&#8221;0\&#8221;&gt;&lt;\/a&gt;&lt;\/layer&gt;&#8221;);<br />
} else {<br />
document.write(&#8220;&lt;layer name=\&#8221;dot&#8221;+ i +&#8221;\&#8221;     left=\&#8221;15\&#8221; top=\&#8221;15\&#8221; visibility=\&#8221;show\&#8221;&gt;&lt;img     src=&#8217;&#8221;+snowsrc+&#8221;&#8216; border=\&#8221;0\&#8221;&gt;&lt;\/layer&gt;&#8221;);<br />
}<br />
} else if (ie4up||ns6up) {<br />
if (i == 0) {<br />
document.write(&#8220;&lt;div id=\&#8221;dot&#8221;+ i +&#8221;\&#8221; style=\&#8221;POSITION:     absolute; Z-INDEX: &#8220;+ i +&#8221;; VISIBILITY: visible; TOP: 15px; LEFT:     15px;\&#8221;&gt;&lt;a href=\&#8221;http://dynamicdrive.com\&#8221;&gt;&lt;img     src=&#8217;&#8221;+snowsrc+&#8221;&#8216; border=\&#8221;0\&#8221;&gt;&lt;\/a&gt;&lt;\/div&gt;&#8221;);<br />
} else {<br />
document.write(&#8220;&lt;div id=\&#8221;dot&#8221;+ i +&#8221;\&#8221; style=\&#8221;POSITION:     absolute; Z-INDEX: &#8220;+ i +&#8221;; VISIBILITY: visible; TOP: 15px; LEFT:     15px;\&#8221;&gt;&lt;img src=&#8217;&#8221;+snowsrc+&#8221;&#8216;     border=\&#8221;0\&#8221;&gt;&lt;\/div&gt;&#8221;);<br />
}<br />
}<br />
}</p>
<p>function snowNS() { // Netscape main animation function<br />
for (i = 0; i &lt; no; ++ i) { // iterate for every dot<br />
yp[i] += sty[i];<br />
if (yp[i] &gt; doc_height-50) {<br />
xp[i] = Math.random()*(doc_width-am[i]-30);<br />
yp[i] = 0;<br />
stx[i] = 0.02 + Math.random()/10;<br />
sty[i] = 0.7 + Math.random();<br />
doc_width = self.innerWidth;<br />
doc_height = self.innerHeight;<br />
}<br />
dx[i] += stx[i];<br />
document.layers["dot"+i].top = yp[i];<br />
document.layers["dot"+i].left = xp[i] + am[i]*Math.sin(dx[i]);<br />
}<br />
setTimeout(&#8220;snowNS()&#8221;, 10);<br />
}</p>
<p>function snowIE_NS6() { // IE and NS6 main animation function<br />
for (i = 0; i &lt; no; ++ i) { // iterate for every dot<br />
yp[i] += sty[i];<br />
if (yp[i] &gt; doc_height-50) {<br />
xp[i] = Math.random()*(doc_width-am[i]-30);<br />
yp[i] = 0;<br />
stx[i] = 0.02 + Math.random()/10;<br />
sty[i] = 0.7 + Math.random();<br />
doc_width = ns6up?window.innerWidth : document.body.clientWidth;<br />
doc_height = ns6up?window.innerHeight : document.body.clientHeight;<br />
}<br />
dx[i] += stx[i];<br />
if (ie4up){<br />
document.all["dot"+i].style.pixelTop = yp[i];<br />
document.all["dot"+i].style.pixelLeft = xp[i] + am[i]*Math.sin(dx[i]);<br />
}<br />
else if (ns6up){<br />
document.getElementById(&#8220;dot&#8221;+i).style.top=yp[i];<br />
document.getElementById(&#8220;dot&#8221;+i).style.left=xp[i] + am[i]*Math.sin(dx[i]);<br />
}<br />
}<br />
setTimeout(&#8220;snowIE_NS6()&#8221;, 10);<br />
}</p>
<p>if (ns4up) {<br />
snowNS();<br />
} else if (ie4up||ns6up) {<br />
snowIE_NS6();<br />
}</p>
<p>&lt;/script&gt;</p></blockquote>
<p>Recordar configurar la ruta de la imagen de los copos de nieve. Estos son algunos ejemplos que puedes utilizar.</p>
<p style="text-align: center;"><a href="http://www.zonaw.com/wp-content/uploads/2011/12/nieve1.gif"><img class="alignleft size-full wp-image-1560" title="nieve1" src="http://www.zonaw.com/wp-content/uploads/2011/12/nieve1.gif" alt="nieve1" width="24" height="24" /></a> <a href="http://www.zonaw.com/wp-content/uploads/2011/12/nieve3.gif"><img class="alignright size-full wp-image-1562" title="nieve3" src="http://www.zonaw.com/wp-content/uploads/2011/12/nieve3.gif" alt="nieve3" width="25" height="28" /></a><a href="http://www.zonaw.com/wp-content/uploads/2011/12/nieve2.gif"><img class="aligncenter size-full wp-image-1561" title="nieve2" src="http://www.zonaw.com/wp-content/uploads/2011/12/nieve2.gif" alt="nieve2" width="28" height="28" /></a></p>
<p>Para terminar, recuerda que con esta misma técnica y código podrás realizar que caigan de tu web: estrellas, dinero&#8230; cualquier imagen que tenga que ver c on la temáticas de website.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.zonaw.com/efecto-nieve-en-tu-web/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Funciones para WordPress (Parte3)</title>
		<link>http://www.zonaw.com/funciones-para-wordpress-parte3/</link>
		<comments>http://www.zonaw.com/funciones-para-wordpress-parte3/#comments</comments>
		<pubDate>Wed, 07 Dec 2011 15:20:23 +0000</pubDate>
		<dc:creator>ZonaW</dc:creator>
				<category><![CDATA[Programación Web]]></category>
		<category><![CDATA[Scripts Javascript]]></category>
		<category><![CDATA[Tags HTML]]></category>
		<category><![CDATA[Hack]]></category>
		<category><![CDATA[javascript]]></category>
		<category><![CDATA[php]]></category>
		<category><![CDATA[wordpress]]></category>

		<guid isPermaLink="false">/?p=1535</guid>
		<description><![CDATA[Permitir a los colaboradores la subida de archivos Pegando el siguiente código en el fichero functions.php permitiremos que los colaboradores puedan subir archivos al blog. Recuerda que como medida de seguridad en WorPress no se permite la subida de archivos al blog. if ( current_user_can('contributor') &#38;amp;amp;amp;&#38;amp;amp;amp; !current_user_can('upload_files') ) add_action('admin_init', 'allow_contributor_uploads'); function allow_contributor_uploads() { $contributor = get_role('contributor'); $contributor-&#62;add_cap('upload_files'); Eliminar notificación de actualización El siguiente código [...]]]></description>
			<content:encoded><![CDATA[<h3>Permitir a los colaboradores la subida de archivos</h3>
<p>Pegando el siguiente código en el fichero <em>functions.php</em> permitiremos que los colaboradores puedan subir archivos al blog. Recuerda que como medida de seguridad en WorPress no se permite la subida de archivos al blog.</p>
<blockquote>
<pre>if ( current_user_can('contributor')
&amp;amp;amp;amp;&amp;amp;amp;amp; !current_user_can('upload_files') )
add_action('admin_init', 'allow_contributor_uploads');
function allow_contributor_uploads() {
$contributor = get_role('contributor');
$contributor-&gt;add_cap('upload_files');</pre>
</blockquote>
<h3>Eliminar notificación de actualización</h3>
<p>El siguiente código hace que las notificaciones que aparecen en la pantalla principal de WordPress cuando existe una nueva actualización no sean visibles. Especialmente útil, por ejemplo cuando realizamos una instalación de WordPress a un cliente. Para eliminar las notificaciones de actualización sólo se necesita pegar el siguiente código en el fichero functions.php</p>
<blockquote>
<pre>global $user_login;
get_currentuserinfo();
if ($user_login !== "admin") {
add_action( 'init', create_function( '$a',
"remove_action( 'init', 'wp_version_check' );" ), 2 );
add_filter( 'pre_option_update_core',
create_function( '$a', "return null;" ) );
}</pre>
</blockquote>
<h3>Paginación de artículos sin necesidad de plugins</h3>
<p>Gran cantidad de themes en WordPess dependen del plugin <strong>WP-Pagenavi</strong> para realizar correctamente la paginación. Ya sabemos que no es bueno recargar nuestro WordPress de plugins innecesarios, o como en este caso, con código que podemos insertar directamente en el fichero<em> functions.php</em></p>
<blockquote>
<pre>function pagination($prev = '«', $next = '»') {
global $wp_query, $wp_rewrite;
$wp_query-&gt;query_vars['paged'] &gt; 1 ? $current
= $wp_query-&gt;query_vars['paged'] : $current = 1;
$pagination = array(
'base' =&gt; @add_query_arg('paged','%#%'),
'format' =&gt; '',
'total' =&gt; $wp_query-&gt;max_num_pages,
'current' =&gt; $current,
'prev_text' =&gt; __($prev),
'next_text' =&gt; __($next), 'type' =&gt; 'plain'
);
if( $wp_rewrite-&gt;using_permalinks() )
$pagination['base'] = user_trailingslashit(
trailingslashit( remove_query_arg( 's',
get_pagenum_link( 1 ) ) ) . 'page/%#%/', 'paged' );
if( !empty($wp_query-&gt;query_vars['s']) )
$pagination['add_args'] = array( 's' =&gt;
get_query_var( 's' ) ); echo
paginate_links( $pagination );
};</pre>
</blockquote>
<p>Una vez añadido el código anterior correctamente, sólo tienes que añadir la función <em>pagination()</em> al loop de WordPress:</p>
<blockquote>
<pre>&lt;?php if ( have_posts() ) : ?&gt;
&lt;?php while ( have_posts() ) : the_post(); ?&gt;
// contenido del artículo
&lt;?php endwhile; ?&gt;
&lt;div&gt;&lt;?php pagination('»', '«'); ?&gt;&lt;/div&gt;
&lt;?php endif; ?&gt;</pre>
</blockquote>
<p>Para finalizar, recuerda que modificando las siguientes líneas en tu hoja de estilos CSS podás controlar la forma en la que se muestra la paginación:</p>
<blockquote>
<pre>.page-numbers { font-size: 15px; }
.page-numbers.current { color: #222; }
.page-numbers .dots { letter-spacing: 1px }
a.page-numbers { font-size: 14px; color: #3888ff; }</pre>
</blockquote>
<h3>Categorizar y etiquetar artículos de forma automática</h3>
<p>Con el siguiente código puedes hacer que al guardar un artículo automáticamente ya sea guardado con las etiquetas o categorías correspondientes. Para conseguirlo ya deben existir estas categorías/ etiquetas en el blog. Una vez que comprobamos que existen las etiquetas sólo tendremos que pegar el siguiente código en el fichero <em>functions.php</em>. Recordar antes de pegar el código cambiar &#8220;Nombre tag&#8221; y &#8220;Nombre categoría&#8221;</p>
<blockquote>
<pre>&lt;?php
add_action( 'wp_insert_post', 'update_post_terms' );
function update_post_terms( $post_id ) {
if ( $parent = wp_is_post_revision( $post_id ) )
$post_id = $parent;
$post = get_post( $post_id );
if ( $post-&gt;post_type != 'post' )
return;
// add a tag
wp_set_post_terms( $post_id, 'Nombre tag', 'post_tag', true );
// add a category
$categories = wp_get_post_categories( $post_id );
$newcat = get_term_by( 'name', 'Nombre categoria', 'category' );
array_push( $categories, $newcat-&gt;term_id );
wp_set_post_categories( $post_id, $categories );
}
?&gt;</pre>
</blockquote>
<h3>Habilitar por defecto el acortador de direcciones de Google (goo.gl)</h3>
<p>Pegando el siguiente código en el fichero <em>functions.php</em> conseguirás habilitar el acortador de URLs de Google.</p>
<blockquote>
<pre>function googl_shortlink($url, $post_id) {
global $post;
if (!$post_id &amp;&amp; $post) $post_id = $post-&gt;ID;

if ($post-&gt;post_status != 'publish')
return "";

$shortlink = get_post_meta($post_id, '_googl_shortlink', true);
if ($shortlink)
return $shortlink;

$permalink = get_permalink($post_id);

$http = new WP_Http();
$headers = array('Content-Type' =&gt; 'application/json');
$result = $http-&gt;request('https://www.googleapis.com/urlshortener/v1/url',
array( 'method' =&gt; 'POST', 'body' =&gt; '{"longUrl": "' . $permalink . '"}',
 'headers' =&gt; $headers));
$result = json_decode($result['body']);
$shortlink = $result-&gt;id;

if ($shortlink) {
add_post_meta($post_id, '_googl_shortlink', $shortlink, true);
return $shortlink;
}
else {
return $url;
}
}

add_filter('get_shortlink', 'googl_shortlink', 9, 2);</pre>
</blockquote>
<p>Po último añadir el siguiente código donde quieras utilizar la URL acortada de tu artículo:</p>
<blockquote>
<pre>echo "URL corta: " . wp_get_shortlink();</pre>
</blockquote>
]]></content:encoded>
			<wfw:commentRss>http://www.zonaw.com/funciones-para-wordpress-parte3/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>VideoJS: reproductor de video HTML5</title>
		<link>http://www.zonaw.com/videojs-reproductor-de-video-html5/</link>
		<comments>http://www.zonaw.com/videojs-reproductor-de-video-html5/#comments</comments>
		<pubDate>Mon, 05 Dec 2011 11:35:40 +0000</pubDate>
		<dc:creator>ZonaW</dc:creator>
				<category><![CDATA[Descargar plugin]]></category>
		<category><![CDATA[Scripts Javascript]]></category>
		<category><![CDATA[Tutoriales Web]]></category>
		<category><![CDATA[HTML5]]></category>
		<category><![CDATA[javascript]]></category>
		<category><![CDATA[plugin]]></category>
		<category><![CDATA[video]]></category>

		<guid isPermaLink="false">/?p=1524</guid>
		<description><![CDATA[VideoJS es un excente reproductor de video basado en JavaScript que utiliza la funcionalidad de video HTML5. La principal ventaja de utilizar VideoJS es la correcta visualización de los videos en diferentes navegadores y plataformas como Telefonos moviles o tablet al no requerir la utilización de Adobe Flash para ver correctamente el contenido de los [...]]]></description>
			<content:encoded><![CDATA[<p><strong>VideoJS </strong>es un excente <strong>reproductor de video</strong> basado en JavaScript que utiliza la funcionalidad de video <strong>HTML5</strong>. La principal ventaja de utilizar VideoJS es la correcta visualización de los videos en diferentes navegadores y plataformas como Telefonos moviles o tablet al no requerir la utilización de Adobe Flash para ver correctamente el contenido de los videos. Además si el navegador de la persona que visita nuestra página no soporta HTML5, automáticamente mostrará un reproductor en Flash alternativo.</p>
<p><a href="http://www.zonaw.com/wp-content/uploads/2011/12/videojs.jpg"><img class="aligncenter size-full wp-image-1532" title="videojs" src="http://www.zonaw.com/wp-content/uploads/2011/12/videojs.jpg" alt="videojs" width="600" height="277" /></a></p>
<p>Estas son algunas de sus características:</p>
<ul>
<li>Software gratuito y Open Source</li>
<li> Ligero. No utiliza imágenes</li>
<li>Skins 100% personalizables mediante CSS (se incluyen los aspectos: vimeo, YouTube y Hulu)</li>
<li> Independiente de frameworks</li>
<li>Fácil de usar, de entender y extender</li>
<li>Aspecto coherente entre los distintos navegadores</li>
<li>Pantalla completa</li>
<li> Control de volumen</li>
<li> Fallback a Flash</li>
</ul>
<p>Para utilizar VideoJS en nuestra página, lo primero será <a href="http://videojs.com/#download">descargar</a> la última versión de VideoJS, descomprimirla y subirla a nuestro servidor. El siguiente paso será incluir los archivos JavaScript y CSS.</p>
<blockquote>
<pre>&lt;head&gt;
  ...
    &lt;script src="video.js" type="text/javascript" charset="utf-8"&gt;
    &lt;/script&gt;
    &lt;link rel="stylesheet" href="video-js.css" type="text/css"
    media="screen" title="Video JS" charset="utf-8"&gt;
  ...
  &lt;/head&gt;</pre>
</blockquote>
<p>Para tener las funcionalidades de VideoJS añadimos una función JavaScript que se ejecutará cuando cargue la página:</p>
<blockquote>
<pre>&lt;script type="text/javascript" charset="utf-8"&gt;
VideoJS.setupAllWhenReady();
&lt;/script&gt;</pre>
</blockquote>
<p>Para finalizar, en el tag body construimos el player dentro de un div con clase  <strong> “video-js-box” </strong> para reconocer la sección. Dentro del div creado añadimos  <strong> &lt;video&gt; </strong> con sus respectivos atributos y opciones de formato de video.</p>
<blockquote>
<pre>  &lt;!-- Begin VideoJS --&gt;
  &lt;div&gt;
    &lt;!-- Using the Video for Everybody Embed Code
http://camendesign.com/code/video_for_everybody --&gt;
    &lt;video width="640" height="264" controls preload
poster="http://video-js.zencoder.com/oceans-clip.png"&gt;
      &lt;source src="http://video-js.zencoder.com/oceans-clip.mp4"
type='video/mp4; codecs="avc1.42E01E, mp4a.40.2"' /&gt;
      &lt;source src="http://video-js.zencoder.com/oceans-clip.webm"
type='video/webm; codecs="vp8, vorbis"' /&gt;
      &lt;source src="http://video-js.zencoder.com/oceans-clip.ogv"
type='video/ogg; codecs="theora, vorbis"' /&gt;
      &lt;!-- Flash Fallback. Use any flash video player here.
Make sure to keep the vjs-flash-fallback class. --&gt;
      &lt;object id="flash_fallback_1"code-value"&gt;vjs-flash-fallback"
width="640" height="264" type="application/x-shockwave-flash"
        data="http://releases.flowplayer.org/swf/flowplayer-3.2.1.swf"&gt;
        &lt;param name="movie"
value="http://releases.flowplayer.org/swf/flowplayer-3.2.1.swf" /&gt;
        &lt;param name="allowfullscreen" value="true" /&gt;
        &lt;param name="flashvars"
value='config={"playlist":["http://video-js.zencoder.com/oceans-clip.png",
{"url": "http://video-js.zencoder.com/oceans-clip.mp4",
"autoPlay":false,"autoBuffering":true}]}' /&gt;
        &lt;!-- Image Fallback. Typically the same as the poster image. --&gt;
        &lt;img src="http://video-js.zencoder.com/oceans-clip.png"
width="640" height="264"
alt="Poster Image"
          title="No video playback capabilities." /&gt;
      &lt;/object&gt;
    &lt;/video&gt;
    &lt;!-- Download links provided for devices that can't play
video in the browser. --&gt;
    &lt;p&gt;&lt;strong&gt;Download Video:&lt;/strong&gt;
      &lt;a href="http://video-js.zencoder.com/oceans-clip.mp4"&gt;MP4&lt;/a&gt;,
      &lt;a href="http://video-js.zencoder.com/oceans-clip.webm"&gt;WebM&lt;/a&gt;,
      &lt;a href="http://video-js.zencoder.com/oceans-clip.ogv"&gt;Ogg&lt;/a&gt;&lt;br&gt;
      &lt;!-- Support VideoJS by keeping this link. --&gt;
      &lt;a href="http://videojs.com"&gt;HTML5 Video Player&lt;/a&gt; by VideoJS
    &lt;/p&gt;
  &lt;/div&gt;
  &lt;!-- End VideoJS --&gt;</pre>
</blockquote>
<p>Se puede ver una <a href="http://videojs.com/">demo</a> online de la funcionalidad del reproductor y sus Skins 100% CSS.</p>
<p>También dispone de varios <strong>plugins </strong>para hacerlo aún más compatible con: WordPress, jQuery, Drupal, Umbraco y Joomla.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.zonaw.com/videojs-reproductor-de-video-html5/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
<enclosure url="http://video-js.zencoder.com/oceans-clip.mp4" length="19448241" type="video/mp4" />
<enclosure url="http://video-js.zencoder.com/oceans-clip.webm" length="14625011" type="video/webm" />
<enclosure url="http://video-js.zencoder.com/oceans-clip.ogv" length="13235468" type="video/ogg" />
		</item>
		<item>
		<title>validate.js</title>
		<link>http://www.zonaw.com/validate-js/</link>
		<comments>http://www.zonaw.com/validate-js/#comments</comments>
		<pubDate>Fri, 02 Dec 2011 10:51:19 +0000</pubDate>
		<dc:creator>ZonaW</dc:creator>
				<category><![CDATA[Accesibilidad Web]]></category>
		<category><![CDATA[Scripts Javascript]]></category>
		<category><![CDATA[formularios]]></category>
		<category><![CDATA[javascript]]></category>

		<guid isPermaLink="false">/?p=1521</guid>
		<description><![CDATA[Este es un pequeño script que nos puede ser de gran ayuda para la validación de formularios. Su tamaño en versión minified es de 1.3kb además tiene otras ventajas como: no depender de otras librerías como jQuery o Mootols, mensajes personalizables, funcionamiento en todos los principales navegadores (incluido IE6)&#8230; Para comenzar a utilizarlo incluye el [...]]]></description>
			<content:encoded><![CDATA[<p>Este es un pequeño script que nos puede ser de gran ayuda para la <strong>validación de formularios</strong>. Su tamaño en versión minified es de <strong>1.3kb</strong> además tiene otras ventajas como: no depender de otras librerías como jQuery o Mootols, mensajes personalizables, funcionamiento en todos los principales navegadores (incluido IE6)&#8230;</p>
<p>Para comenzar a utilizarlo incluye el siguiente código JavaScript en tu página:</p>
<blockquote>
<pre>&lt;script type="text/javascript" src="validate.min.js"&gt;&lt;/script&gt;</pre>
</blockquote>
<p>Crea el objeto de validación con las reglas que necesites:</p>
<blockquote>
<pre>var validator = new FormValidator('example_form', [{
    name: 'req',
    display: 'required',
    rules: 'required'
}, {
    name: 'alphanumeric',
    rules: 'alpha_numeric'
}, {
    name: 'password',
    rules: 'required'
}, {
    name: 'password_confirm',
    display: 'password confirmation',
    rules: 'required|matches[password]'
}, {
    name: 'email',
    rules: 'valid_email'
}, {
    name: 'minlength',
    display: 'min length',
    rules: 'min_length[8]'
}], function(errors, events) {
    if (errors.length &gt; 0) {
        // Show the errors
    }
});</pre>
</blockquote>
<p>Podrás ver su funcionamiento y toda la documentación necesaria para crear formularios válidos en <a href="http://rickharrison.github.com/validate.js/">validate.js</a></p>
]]></content:encoded>
			<wfw:commentRss>http://www.zonaw.com/validate-js/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Desabilitar la tecla &#8220;Enter&#8221; en formularios</title>
		<link>http://www.zonaw.com/desabilitar-la-tecla-enter-en-formularios/</link>
		<comments>http://www.zonaw.com/desabilitar-la-tecla-enter-en-formularios/#comments</comments>
		<pubDate>Thu, 24 Nov 2011 08:51:18 +0000</pubDate>
		<dc:creator>ZonaW</dc:creator>
				<category><![CDATA[Programación Web]]></category>
		<category><![CDATA[Scripts Javascript]]></category>
		<category><![CDATA[accesibilidad]]></category>
		<category><![CDATA[javascript]]></category>
		<category><![CDATA[jQuery]]></category>
		<category><![CDATA[teclado]]></category>

		<guid isPermaLink="false">/?p=1484</guid>
		<description><![CDATA[Los formularios modales que se utilizan de forma predeterminada, es posible ejecutarlos pulsando la tecla &#8220;Enter&#8221; o mediante el botón &#8220;enviar&#8221; del mismo. En ocasiones puede ocurrir que no queramos que nuestro formularios sean enviados por nuestros usuarios utilizando el teclado. Un ejemplo claro para deshabilitar la tecla &#8220;Enter&#8221; en fomularios se puede dar si [...]]]></description>
			<content:encoded><![CDATA[<p>Los <strong>formularios modales</strong> que se utilizan de forma predeterminada, es posible ejecutarlos pulsando la tecla &#8220;Enter&#8221; o mediante el botón &#8220;enviar&#8221; del mismo. En ocasiones puede ocurrir que no queramos que nuestro formularios sean enviados por nuestros usuarios utilizando el teclado. Un ejemplo claro para <strong>deshabilitar la tecla &#8220;Enter&#8221; en fomularios</strong> se puede dar si queremos medir el número de clicks que recibe el botón de: &#8220;enviar pedido&#8221;, &#8220;aceptar condiciones&#8221; o &#8220;enviar comentario&#8221; de los formularios.</p>
<p>Con el siguiente <strong>script</strong> <strong>jQuery</strong> conseguiremos desabilitar la tecla &#8220;Enter&#8221; al ejecutar un formulario, de esta forma nuestros usuarios se verán obligados a utilizar el botón de enviar de nuestros formularios.</p>
<blockquote>
<pre>$(document).ready(function() {
    $("form").keypress(function(e) {
        if (e.which == 13) {
            return false;
        }
    });
});</pre>
</blockquote>
]]></content:encoded>
			<wfw:commentRss>http://www.zonaw.com/desabilitar-la-tecla-enter-en-formularios/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>

