<?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>Shakaran &#187; HTML</title> <atom:link href="http://shakaran.net/blog/category/html/feed/" rel="self" type="application/rss+xml" /><link>http://shakaran.net/blog</link> <description>Blog de un estudiante de ingeniería informática y sysadmin</description> <lastBuildDate>Fri, 20 Jan 2012 01:04:24 +0000</lastBuildDate> <language>en</language> <sy:updatePeriod>hourly</sy:updatePeriod> <sy:updateFrequency>1</sy:updateFrequency> <image><link>http://shakaran.net/blog</link> <url>http://www.shakaran.net/blog/wp-content/favicon.png</url><title>Shakaran</title> </image> <item><title>Cumplir estandar W3C con target=&#8221;_blank&#8221; utilizando Mootools</title><link>http://shakaran.net/blog/2008/07/cumplir-estandar-w3c-con-target-blank-utilizando-mootools/</link> <comments>http://shakaran.net/blog/2008/07/cumplir-estandar-w3c-con-target-blank-utilizando-mootools/#comments</comments> <pubDate>Wed, 30 Jul 2008 12:07:52 +0000</pubDate> <dc:creator>shakaran</dc:creator> <category><![CDATA[HTML]]></category> <category><![CDATA[Inclasificado]]></category> <category><![CDATA[cumplir]]></category> <category><![CDATA[DOCTYPE]]></category> <category><![CDATA[estandar]]></category> <category><![CDATA[Mootools]]></category> <category><![CDATA[strict]]></category> <category><![CDATA[target]]></category> <category><![CDATA[transitional]]></category> <category><![CDATA[W3C]]></category><guid isPermaLink="false">http://shakaran.net/blog/?p=48</guid> <description><![CDATA[Este verano estoy programando varios scripts e intento que estos cumplan los estándares al máximo posible. Al validar uno de mis scripts con el W3C Validator y siguiendo el estándar estricto (Strict) se me presento el problema de que en mis enlaces utilizaba la etiqueta target=&#8221;_blank&#8221; para que determinados enlaces se abrieran en otra página [...]<br /><div><img src="http://shakaran.net/blog/wp-content/plugins/gd-star-rating/gfx.php?value=9.0" /></div><div>Rating: 9.0/<strong>10</strong> (1 vote cast)</div><br />]]></description> <content:encoded><![CDATA[<div class="wpbuzzer_button" style="float: right"><a title="Post on Google Buzz" class="google-buzz-button" href="http://www.google.com/buzz/post" data-button-style="normal-button" data-url="http://shakaran.net/blog/2008/07/cumplir-estandar-w3c-con-target-blank-utilizando-mootools/" data-imageurl=""></a><script type="text/javascript" src="http://www.google.com/buzz/api/button.js"></script></div><div style="text-align:justify">Este verano estoy programando varios scripts e intento que estos <strong>cumplan los estándares</strong> al máximo posible.</p><p>Al validar uno de mis scripts con el <a href="http://validator.w3.org" title="W3C Validator">W3C Validator</a> y siguiendo el estándar estricto (<strong>Strict</strong>) se me presento el problema de que en mis enlaces utilizaba la etiqueta <strong>target=&#8221;_blank&#8221; </strong>para que determinados enlaces se abrieran en otra página y no en la misma. Como por ejemplo:</p><div class="wp_codebox_msgheader"><span class="right"><sup><a href="http://www.ericbess.com/ericblog/2008/03/03/wp-codebox/#examples" target="_blank" title="WP-CodeBox HowTo?"><span style="color: #99cc00">?</span></a></sup></span><span class="left2">Descargar <a href="http://shakaran.net/blog/wp-content/plugins/wp-codebox/wp-codebox.php?p=48&amp;download=enlace_con_target.txt">enlace_con_target.txt</a></span><div class="codebox_clear"></div></div><div class="wp_codebox"><table><tr id="p486"><td class="line_numbers"><pre>1
</pre></td><td class="code" id="p48code6"><pre class="html" style="font-family:monospace;">&lt;a href=&quot;http://undominio.com&quot; target=&quot;_blank&quot;&gt;enlace&lt;/a&gt;</pre></td></tr></table></div><p>Pero este atributo no era válido para el estándar estricto. Aunque una alternativa podría ser poner el estándar como transicional (<strong>Transitional</strong>) y conseguir que se validara, prefería cumplirlo a raja tabla con Strict y darle al coco.</p><p>Después de <em>googlear</em> un poco encontré un enlace interesante en <a href="http://www.eslomas.com/index.php/archives/2005/04/11/como-abrir-enlaces-en-ventana-nueva-sin-utilizar-target-_blank/" title="EsLoMas.com">EsLoMas.com</a> donde se hablaba a lo largo y tendido de como solucionarlo a través de dos funciones de javascript (una más eficiente que la otra) y que simplemente se aplicarían poniendo a un enlace <strong>class=&#8221;external&#8221;</strong> (o otro nombre de clase que predefiniéramos).</p><p>Por ejemplo así:</p><div class="wp_codebox_msgheader"><span class="right"><sup><a href="http://www.ericbess.com/ericblog/2008/03/03/wp-codebox/#examples" target="_blank" title="WP-CodeBox HowTo?"><span style="color: #99cc00">?</span></a></sup></span><span class="left2">Descargar <a href="http://shakaran.net/blog/wp-content/plugins/wp-codebox/wp-codebox.php?p=48&amp;download=enlace_sin_target.txt">enlace_sin_target.txt</a></span><div class="codebox_clear"></div></div><div class="wp_codebox"><table><tr id="p487"><td class="line_numbers"><pre>1
</pre></td><td class="code" id="p48code7"><pre class="html" style="font-family:monospace;">&lt;a href=&quot;http://undominio.com&quot; class=&quot;external&quot;&gt;enlace&lt;/a&gt;</pre></td></tr></table></div><p>Me gusto la manera de solucionarlo, aunque al utilizar <a title="Mootools Home" href="http://mootools.net/">Mootools</a> creía que podría integrarlo en la página y a la vez <strong>acortar un poco más el script</strong> y con suerte ganar algo de eficiencia gracias a la librería.</p><p>Pues bien, el script original ofrecido por la página de EsLoMas.com (la versión más eficiente era la siguiente:</p><div class="wp_codebox_msgheader"><span class="right"><sup><a href="http://www.ericbess.com/ericblog/2008/03/03/wp-codebox/#examples" target="_blank" title="WP-CodeBox HowTo?"><span style="color: #99cc00">?</span></a></sup></span><span class="left2">Descargar <a href="http://shakaran.net/blog/wp-content/plugins/wp-codebox/wp-codebox.php?p=48&amp;download=funcion_mootools.txt">funcion_mootools.txt</a></span><div class="codebox_clear"></div></div><div class="wp_codebox"><table><tr id="p488"><td class="line_numbers"><pre>1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
</pre></td><td class="code" id="p48code8"><pre class="javascript" style="font-family:monospace;">   <span style="color: #003366; font-weight: bold;">function</span> prepareTargetBlank<span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#123;</span>
   <span style="color: #003366; font-weight: bold;">var</span> className <span style="color: #339933;">=</span> <span style="color: #3366CC;">'external'</span><span style="color: #339933;">;</span>
   <span style="color: #003366; font-weight: bold;">var</span> <span style="color: #000066; font-weight: bold;">as</span> <span style="color: #339933;">=</span> document.<span style="color: #660066;">getElementsByTagName</span><span style="color: #009900;">&#40;</span><span style="color: #3366CC;">'a'</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
   <span style="color: #000066; font-weight: bold;">for</span><span style="color: #009900;">&#40;</span>i<span style="color: #339933;">=</span><span style="color: #CC0000;">0</span><span style="color: #339933;">;</span>i<span style="color: #339933;">&lt;</span>as .<span style="color: #660066;">length</span><span style="color: #339933;">;</span>i<span style="color: #339933;">++</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#123;</span>
      <span style="color: #003366; font-weight: bold;">var</span> a <span style="color: #339933;">=</span> <span style="color: #000066; font-weight: bold;">as</span><span style="color: #009900;">&#91;</span>i<span style="color: #009900;">&#93;</span><span style="color: #339933;">;</span>
      r<span style="color: #339933;">=</span><span style="color: #003366; font-weight: bold;">new</span> RegExp<span style="color: #009900;">&#40;</span><span style="color: #3366CC;">&quot;(^| )&quot;</span><span style="color: #339933;">+</span>className<span style="color: #339933;">+</span><span style="color: #3366CC;">&quot;($| )&quot;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
      <span style="color: #000066; font-weight: bold;">if</span><span style="color: #009900;">&#40;</span>r.<span style="color: #660066;">test</span><span style="color: #009900;">&#40;</span>a.<span style="color: #660066;">className</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#123;</span>
         a.<span style="color: #660066;">onclick</span> <span style="color: #339933;">=</span> <span style="color: #003366; font-weight: bold;">function</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#123;</span>
            window.<span style="color: #000066;">open</span><span style="color: #009900;">&#40;</span><span style="color: #000066; font-weight: bold;">this</span>.<span style="color: #660066;">href</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
            <span style="color: #000066; font-weight: bold;">return</span> <span style="color: #003366; font-weight: bold;">false</span><span style="color: #339933;">;</span>
         <span style="color: #009900;">&#125;</span>
      <span style="color: #009900;">&#125;</span>
    <span style="color: #009900;">&#125;</span>
<span style="color: #009900;">&#125;</span>
&nbsp;
window.<span style="color: #000066;">onload</span> <span style="color: #339933;">=</span> prepareTargetBlank<span style="color: #339933;">;</span></pre></td></tr></table></div><p>Yo <strong>propongo la siguiente solución</strong> con Mootools 1.2.1 (seguramente es mejorable, comentarios son bienvenidos):</p><div class="wp_codebox_msgheader"><span class="right"><sup><a href="http://www.ericbess.com/ericblog/2008/03/03/wp-codebox/#examples" target="_blank" title="WP-CodeBox HowTo?"><span style="color: #99cc00">?</span></a></sup></span><span class="left2">Descargar <a href="http://shakaran.net/blog/wp-content/plugins/wp-codebox/wp-codebox.php?p=48&amp;download=funcion_mootools.txt">funcion_mootools.txt</a></span><div class="codebox_clear"></div></div><div class="wp_codebox"><table><tr id="p489"><td class="line_numbers"><pre>1
2
3
4
5
6
7
8
9
10
11
</pre></td><td class="code" id="p48code9"><pre class="javascript" style="font-family:monospace;">    window.<span style="color: #660066;">addEvent</span><span style="color: #009900;">&#40;</span><span style="color: #3366CC;">'domready'</span><span style="color: #339933;">,</span><span style="color: #003366; font-weight: bold;">function</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span>
    <span style="color: #009900;">&#123;</span>
        $$<span style="color: #009900;">&#40;</span><span style="color: #3366CC;">'a.external'</span><span style="color: #009900;">&#41;</span>.<span style="color: #660066;">each</span><span style="color: #009900;">&#40;</span><span style="color: #003366; font-weight: bold;">function</span><span style="color: #009900;">&#40;</span>el<span style="color: #009900;">&#41;</span>
        <span style="color: #009900;">&#123;</span>
            el.<span style="color: #660066;">addEvent</span><span style="color: #009900;">&#40;</span><span style="color: #3366CC;">'click'</span><span style="color: #339933;">,</span><span style="color: #003366; font-weight: bold;">function</span><span style="color: #009900;">&#40;</span>ev<span style="color: #009900;">&#41;</span>
            <span style="color: #009900;">&#123;</span>
                <span style="color: #003366; font-weight: bold;">new</span> Event<span style="color: #009900;">&#40;</span>ev<span style="color: #009900;">&#41;</span>.<span style="color: #000066;">stop</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
                window.<span style="color: #000066;">open</span><span style="color: #009900;">&#40;</span>el.<span style="color: #660066;">href</span><span style="color: #009900;">&#41;</span>
            <span style="color: #009900;">&#125;</span><span style="color: #009900;">&#41;</span>
        <span style="color: #009900;">&#125;</span><span style="color: #009900;">&#41;</span>
    <span style="color: #009900;">&#125;</span><span style="color: #009900;">&#41;</span></pre></td></tr></table></div><p>Mi solución esta basada en los <strong>selectores de Mootools $$</strong> que recogen la etiqueta a (anchor) y para cada una (each) asocio un evento click (onClick) y paro dicho evento para asociar una nueva ventana al la locación donde apunte el enlace (href).</p><p>Para los talibanes del código que quieren que el script pese menos <strong>ahorrando líneas de código</strong> pueden dejarla en una sola línea de código (aunque se ofusca bastante para luego releer el código en un futuro):</p><div class="wp_codebox_msgheader"><span class="right"><sup><a href="http://www.ericbess.com/ericblog/2008/03/03/wp-codebox/#examples" target="_blank" title="WP-CodeBox HowTo?"><span style="color: #99cc00">?</span></a></sup></span><span class="left2">Descargar <a href="http://shakaran.net/blog/wp-content/plugins/wp-codebox/wp-codebox.php?p=48&amp;download=funcion_optimizada.txt">funcion_optimizada.txt</a></span><div class="codebox_clear"></div></div><div class="wp_codebox"><table><tr id="p4810"><td class="line_numbers"><pre>1
</pre></td><td class="code" id="p48code10"><pre class="javascript" style="font-family:monospace;">    window.<span style="color: #660066;">addEvent</span><span style="color: #009900;">&#40;</span><span style="color: #3366CC;">'domready'</span><span style="color: #339933;">,</span><span style="color: #003366; font-weight: bold;">function</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#123;</span>$$<span style="color: #009900;">&#40;</span><span style="color: #3366CC;">'a.external'</span><span style="color: #009900;">&#41;</span>.<span style="color: #660066;">each</span><span style="color: #009900;">&#40;</span><span style="color: #003366; font-weight: bold;">function</span><span style="color: #009900;">&#40;</span>el<span style="color: #009900;">&#41;</span><span style="color: #009900;">&#123;</span>el.<span style="color: #660066;">addEvent</span><span style="color: #009900;">&#40;</span><span style="color: #3366CC;">'click'</span><span style="color: #339933;">,</span><span style="color: #003366; font-weight: bold;">function</span><span style="color: #009900;">&#40;</span>ev<span style="color: #009900;">&#41;</span><span style="color: #009900;">&#123;</span><span style="color: #003366; font-weight: bold;">new</span> Event<span style="color: #009900;">&#40;</span>ev<span style="color: #009900;">&#41;</span>.<span style="color: #000066;">stop</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>window.<span style="color: #000066;">open</span><span style="color: #009900;">&#40;</span>el.<span style="color: #660066;">href</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#125;</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#125;</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#125;</span><span style="color: #009900;">&#41;</span></pre></td></tr></table></div><p>Si optáis por esta última versión, os <strong>recomiendo</strong> guardar un archivo nombre.js y otro nombre_edit.js con la anterior, con el fin, de que podáis tener la versión menos compacta más a mano por si queréis retocarla y para cuando la pongáis en vuestros sitios poner la versión de una línea.</as></pre></div> <br /><div><img src="http://shakaran.net/blog/wp-content/plugins/gd-star-rating/gfx.php?value=9.0" /></div><div>Rating: 9.0/<strong>10</strong> (1 vote cast)</div><br />]]></content:encoded> <wfw:commentRss>http://shakaran.net/blog/2008/07/cumplir-estandar-w3c-con-target-blank-utilizando-mootools/feed/</wfw:commentRss> <slash:comments>6</slash:comments> </item> </channel> </rss>
<!-- Performance optimized by W3 Total Cache. Learn more: http://www.w3-edge.com/wordpress-plugins/

Minified using memcached
Page Caching using memcached
Database Caching 12/35 queries in 0.035 seconds using memcached
Object Caching 1048/1065 objects using memcached

Served from: shakaran.net @ 2012-02-04 23:53:04 -->
