<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet type="text/xsl" media="screen" href="/~d/styles/rss2full.xsl"?><?xml-stylesheet type="text/css" media="screen" href="http://feeds.feedburner.com/~d/styles/itemcontent.css"?><rss xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/" xmlns:wfw="http://wellformedweb.org/CommentAPI/" xmlns:feedburner="http://rssnamespace.org/feedburner/ext/1.0" version="2.0"><channel><title>NetCódigo e Internet</title><link>http://kartones.net/blogs/netcodigo/default.aspx</link><description>El conocimiento es un bien que crece a medida que se comparte</description><dc:language>en</dc:language><generator>CommunityServer 2007 SP2 (Build: 20611.960)</generator><atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="self" href="http://feeds.feedburner.com/netcodigoeinternet" type="application/rss+xml" /><feedburner:emailServiceId>netcodigoeinternet</feedburner:emailServiceId><feedburner:feedburnerHostname>http://feedburner.google.com</feedburner:feedburnerHostname><atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="hub" href="http://pubsubhubbub.appspot.com" /><item><title>Plugin WaterMark JQuery</title><link>http://feedproxy.google.com/~r/netcodigoeinternet/~3/rcUrMosMqts/plugin-watermark-jquery.aspx</link><pubDate>Sat, 03 Jan 2009 12:35:00 GMT</pubDate><guid isPermaLink="false">b86c0850-82e5-42ed-a9d8-bde9e8f94ec1:36004</guid><dc:creator>fsancab</dc:creator><slash:comments>0</slash:comments><wfw:commentRss>http://kartones.net/blogs/netcodigo/rsscomments.aspx?PostID=36004</wfw:commentRss><comments>http://kartones.net/blogs/netcodigo/archive/2009/01/03/plugin-watermark-jquery.aspx#comments</comments><description>&lt;p&gt;&lt;img src="http://netcodigo.webinfo.es/wp-content/jquery-logo-peq.gif" class="alignnone size-medium wp-image-342" title="jquery-logo-peq" alt="" width="60" height="60" /&gt; He empezado a usar el &lt;a href="http://netcodigo.webinfo.es/2008/12/29/watermark-con-jquery/"&gt;watermark&lt;/a&gt; que hice en JQuery y me he dado cuenta de alguna cuestión a mejorar. Lo primero, he transformado el código en un &lt;a href="http://plugins.jquery.com/"&gt;plugin&lt;/a&gt; para JQuery. Lo segundo es que he introducido dos mejoras.
&lt;/p&gt;&lt;p&gt;Una es la posibilidad de no aplicar el efecto a determinados input box o textbox, y lo segundo, la posibilidad de que cuando un input obtenga el foco se seleccione todo el texto que contiene. Esto para no tener que usar el ratón o teclado para manipular dicho texto.

Así que el plugin acepta dos parámetros, tal que:
&lt;/p&gt;&lt;div class="codigo"&gt;JQuery.WaterMarkOn(param1, param2);&lt;/div&gt;
&lt;div class="codigo"&gt;param1: string conteniendo aquellos input box o textbox en los que no se desea aplicar el watermark.
&lt;/div&gt;&lt;div class="codigo"&gt;param2: string &amp;quot;true&amp;quot; o &amp;quot;false&amp;quot; que indica si se desea seleccionar el texto al obtener el foco.&lt;/div&gt;&lt;p&gt;&amp;nbsp;Ejemplo:
&lt;/p&gt;&lt;div class="codigo"&gt;JQuery.WaterMarkOn(&amp;quot;input3,input5&amp;quot;, &amp;quot;true&amp;quot;);&lt;/div&gt;&lt;p&gt;&amp;nbsp;En el ejemplo anterior se indica que al input3 y al input5 no se aplique el watermark y que se desea realizar un select a los input.

&lt;/p&gt;&lt;p&gt;&lt;a href="http://webinfo.es/ejemplosjquery/ejemplo8/index.html"&gt;Aquí&lt;/a&gt; pueden ver el ejemplo en acción.
El plugin consta de dos ficheros, el código jquery y un fichero css para que puedan personalizar el watermark.&lt;/p&gt;&lt;p&gt;

&lt;a href="http://netcodigo.webinfo.es/wp-content/plugins/wp-downloadMonitor/download.php?id=21"&gt;Aquí&lt;/a&gt; pueden ver bajar el plugin.

&lt;/p&gt;&lt;p&gt;Lo pueden ver también en el &lt;a href="http://plugins.jquery.com/node/5493"&gt;repositiorio de plugins de JQuery&lt;/a&gt;.&lt;/p&gt;
&lt;img src="http://kartones.net/aggbug.aspx?PostID=36004" width="1" height="1"&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/ahIvitZtscwlJk5VKR-GbkI9EHI/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/ahIvitZtscwlJk5VKR-GbkI9EHI/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/ahIvitZtscwlJk5VKR-GbkI9EHI/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/ahIvitZtscwlJk5VKR-GbkI9EHI/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/netcodigoeinternet/~4/rcUrMosMqts" height="1" width="1"/&gt;</description><category domain="http://kartones.net/blogs/netcodigo/archive/tags/ASP.Net/default.aspx">ASP.Net</category><category domain="http://kartones.net/blogs/netcodigo/archive/tags/JQuery/default.aspx">JQuery</category><feedburner:origLink>http://kartones.net/blogs/netcodigo/archive/2009/01/03/plugin-watermark-jquery.aspx</feedburner:origLink></item><item><title>Oxite. CMS de Microsoft</title><link>http://feedproxy.google.com/~r/netcodigoeinternet/~3/V-5nrda4AM8/oxite-cms-de-microsoft.aspx</link><pubDate>Sat, 03 Jan 2009 12:33:00 GMT</pubDate><guid isPermaLink="false">b86c0850-82e5-42ed-a9d8-bde9e8f94ec1:36003</guid><dc:creator>fsancab</dc:creator><slash:comments>0</slash:comments><wfw:commentRss>http://kartones.net/blogs/netcodigo/rsscomments.aspx?PostID=36003</wfw:commentRss><comments>http://kartones.net/blogs/netcodigo/archive/2009/01/03/oxite-cms-de-microsoft.aspx#comments</comments><description>&lt;img src="http://netcodigo.webinfo.es/wp-content/oxite.gif" title="Oxite" alt="Oxite" /&gt; Por fin Microsoft se ha decidido a crear su propio CMS o como lo llaman ellos, Blog Engine.

Creo que se echaba en falta alguna herramienta oficial para cubrir ese nicho espectacular que existe hoy en día en el mundo blog. Pero creo que, más enfocado para el público en general, lo veo más para las empresas en las que por unas razones u otras no quieren instalar otra base de datos que no sea SQL Server. Les aseguro que esto pasa a menudo.

Se ha escrito usando ASP.Net MVC y un ejemplo de uso se puede encontrar en &lt;a href="http://visitmix.com/"&gt;MIX Online&lt;/a&gt;. Tiene licencia &lt;a href="http://en.wikipedia.org/wiki/Microsoft_Public_License#Microsoft_Public_License_.28Ms-PL.29"&gt;Ms-PL&lt;/a&gt;, que es una licencia open source made-in Microsoft. La versión actual es &lt;span id="ctl00_ctl00_MasterContent_Content_TitleLabel" class="CodePlexPageHeader"&gt;Oxite.2008.12.5 y es ya una versión estable.&lt;/span&gt;

&lt;span class="CodePlexPageHeader"&gt;Aprovecho para comentar que ya existía algún proyecto libre de este estilo usando ASP.Net como &lt;a href="http://www.codeplex.com/blogengine"&gt;BlogEngine.Net&lt;/a&gt;, &lt;a href="http://subtextproject.com/"&gt;Subtext&lt;/a&gt; o &lt;a href="http://www.codeplex.com/dasBlog"&gt;dasBlog&lt;/a&gt; por si quieren echarle un vistazo. &lt;/span&gt;

&lt;span class="CodePlexPageHeader"&gt;Les dejo recursos sobre el proyecto.
&lt;/span&gt;
&lt;ul&gt;
	&lt;li&gt;&lt;a href="http://www.codeplex.com/oxite/Release/ProjectReleases.aspx?ReleaseId=20210"&gt;&lt;span class="CodePlexPageHeader"&gt;Descarga&lt;/span&gt;&lt;/a&gt;&lt;/li&gt;
	&lt;li&gt;&lt;a href="http://www.asp.net/mvc/"&gt;&lt;span class="CodePlexPageHeader"&gt;ASP.Net MVC&lt;/span&gt;&lt;/a&gt;&lt;/li&gt;
	&lt;li&gt;&lt;a href="http://www.codeplex.com/oxite/Wiki/View.aspx?title=gettingstarted&amp;amp;referringTitle=Home"&gt;Getting Started with Oxite&lt;/a&gt;&lt;/li&gt;
	&lt;li&gt;&lt;a href="http://www.codeplex.com/oxite/Wiki/View.aspx?title=FAQ&amp;amp;referringTitle=Home"&gt;FAQ&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
Y ya, hasta el año que viene, que lo disfruten.
&lt;img src="http://kartones.net/aggbug.aspx?PostID=36003" width="1" height="1"&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/PlMMwPbaXKbxgZU3erw_UbEWG0w/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/PlMMwPbaXKbxgZU3erw_UbEWG0w/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/PlMMwPbaXKbxgZU3erw_UbEWG0w/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/PlMMwPbaXKbxgZU3erw_UbEWG0w/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/netcodigoeinternet/~4/V-5nrda4AM8" height="1" width="1"/&gt;</description><category domain="http://kartones.net/blogs/netcodigo/archive/tags/open+source/default.aspx">open source</category><category domain="http://kartones.net/blogs/netcodigo/archive/tags/ASP.Net/default.aspx">ASP.Net</category><category domain="http://kartones.net/blogs/netcodigo/archive/tags/Recursos/default.aspx">Recursos</category><feedburner:origLink>http://kartones.net/blogs/netcodigo/archive/2009/01/03/oxite-cms-de-microsoft.aspx</feedburner:origLink></item><item><title>WaterMark con JQuery</title><link>http://feedproxy.google.com/~r/netcodigoeinternet/~3/rGctaybwfkM/watermark-con-jquery.aspx</link><pubDate>Sat, 03 Jan 2009 12:26:00 GMT</pubDate><guid isPermaLink="false">b86c0850-82e5-42ed-a9d8-bde9e8f94ec1:36002</guid><dc:creator>fsancab</dc:creator><slash:comments>0</slash:comments><wfw:commentRss>http://kartones.net/blogs/netcodigo/rsscomments.aspx?PostID=36002</wfw:commentRss><comments>http://kartones.net/blogs/netcodigo/archive/2009/01/03/watermark-con-jquery.aspx#comments</comments><description>&lt;p&gt;&lt;img src="http://netcodigo.webinfo.es/wp-content/jquery-logo-peq.gif" class="alignnone size-medium wp-image-342" title="jquery-logo-peq" alt="" width="60" height="60" /&gt; Hasta la fecha, para hacer las marcas de agua en mis textbox siempre he usado el control &lt;a href="http://www.asp.net/AJAX/AjaxControlToolkit/Samples/TextBoxWatermark/TextBoxWatermark.aspx"&gt;TextBoxWaterMark&lt;/a&gt; del &lt;a href="http://www.asp.net/ajax/ajaxcontroltoolkit/"&gt;ASP.Net Ajax Control Toolkit&lt;/a&gt;. El problema, o lo que yo considero un coñazo es tener que estar declarando para cada TextBox un TextBoxWaterMark que apunte al primero y asignar valores a cada propiedad. Esto por cada TextBox de la página. Realmente un esfuerzo innecesario.

Por esto me he decido escribir código JQuery para evitarlo y simplificar mi trabajo. &lt;/p&gt;&lt;p&gt;Para ello necesitamos un CSS que se aplique a la marca de agua y la llamada correspondiente al código JQuery. Tan sencillo como esto.

&lt;/p&gt;&lt;p&gt;Como siempre, las partes.

&lt;/p&gt;&lt;p&gt;CSS
&lt;/p&gt;&lt;div class="codigo"&gt;.WaterMark {

color: #999;

background-color:#E2EAF4;

font-style: italic;

}&lt;/div&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;A continuación el código JQuery.
&lt;/p&gt;&lt;div class="codigo"&gt;$(document).ready(function() {

&lt;/div&gt;&lt;div class="codigo"&gt;// APLICA WATERMARK SI EL TEXTBOX NO TIENE VALOR

&lt;/div&gt;&lt;div class="codigo"&gt;jQuery(&amp;quot;input&amp;quot;).each(function() {

&lt;/div&gt;&lt;div class="codigo"&gt;if ($(this).val() == $(this).attr(&amp;#39;title&amp;#39;))

&lt;/div&gt;&lt;div class="codigo"&gt;$(this).val(&amp;#39;&amp;#39;).addClass(&amp;#39;WaterMarkOn&amp;#39;);

&lt;/div&gt;&lt;div class="codigo"&gt;else &lt;/div&gt;&lt;div class="codigo"&gt;if ($.trim($(this).val()) == &amp;#39;&amp;#39;)

&lt;/div&gt;&lt;div class="codigo"&gt;$(this).addClass(&amp;#39;WaterMarkOn&amp;#39;).val($(this).attr(&amp;#39;title&amp;#39;));

&lt;/div&gt;&lt;div class="codigo"&gt;});

&lt;/div&gt;&lt;div class="codigo"&gt;// AL OBTENER EL FOCO LIMPIA TITLE Y QUITA CLASE DE MARCA
&lt;/div&gt;&lt;div class="codigo"&gt;
jQuery(&amp;quot;input&amp;quot;).focus(function() {

&lt;/div&gt;&lt;div class="codigo"&gt;if ($(this).hasClass(&amp;quot;WaterMarkOn&amp;quot;))

$(this).removeClass(&amp;#39;WaterMarkOn&amp;#39;).val(&amp;#39;&amp;#39;);

});

&lt;/div&gt;&lt;div class="codigo"&gt;// AL PERDER FOCO SI EL INPUT ESTÁ VACIO VUELVE A PONER MARCA

&lt;/div&gt;&lt;div class="codigo"&gt;jQuery(&amp;quot;input&amp;quot;).blur(function() {

&lt;/div&gt;&lt;div class="codigo"&gt;if ($(this).val() == &amp;#39;&amp;#39;)

&lt;/div&gt;&lt;div class="codigo"&gt;$(this).addClass(&amp;#39;WaterMarkOn&amp;#39;).val($(this).attr(&amp;#39;title&amp;#39;));

});

});&lt;/div&gt;&lt;p&gt;&amp;nbsp;Y el código aspx.
&lt;/p&gt;&lt;div class="codigo"&gt;&amp;lt;head runat=&amp;quot;server&amp;quot;&amp;gt;

&lt;/div&gt;&lt;div class="codigo"&gt;&amp;lt;title&amp;gt;TextBoxWaterMark&amp;lt;/title&amp;gt;

&lt;/div&gt;&lt;div class="codigo"&gt;&amp;lt;script src=&amp;quot;Scripts/jquery.js&amp;quot; type=&amp;quot;text/javascript&amp;quot;&amp;gt;&amp;lt;/script&amp;gt;

&lt;/div&gt;&lt;div class="codigo"&gt;&amp;lt;script src=&amp;quot;Scripts/jquery-vsdoc.js&amp;quot; type=&amp;quot;text/javascript&amp;quot;&amp;gt;&amp;lt;/script&amp;gt;

&lt;/div&gt;&lt;div class="codigo"&gt;&amp;lt;script src=&amp;quot;Scripts/Default.js&amp;quot; type=&amp;quot;text/javascript&amp;quot;&amp;gt;&amp;lt;/script&amp;gt;

&lt;/div&gt;&lt;div class="codigo"&gt;&amp;lt;script src=&amp;quot;Scripts/jquery.watermark.js&amp;quot; type=&amp;quot;text/javascript&amp;quot;&amp;gt;&amp;lt;/script&amp;gt;

&lt;/div&gt;&lt;div class="codigo"&gt;&amp;nbsp;&lt;/div&gt;&lt;div class="codigo"&gt;&amp;lt;link href=&amp;quot;css/WaterMark.css&amp;quot; rel=&amp;quot;stylesheet&amp;quot; type=&amp;quot;text/css&amp;quot; /&amp;gt;

&lt;/div&gt;&lt;div class="codigo"&gt;&amp;lt;/head&amp;gt;

&lt;/div&gt;&lt;div class="codigo"&gt;&amp;lt;body&amp;gt;

&lt;/div&gt;&lt;div class="codigo"&gt;&amp;lt;form id=&amp;quot;form1&amp;quot; runat=&amp;quot;server&amp;quot;&amp;gt;
&lt;/div&gt;&lt;div class="codigo"&gt;
&amp;lt;div&amp;gt;

&lt;/div&gt;&lt;div class="codigo"&gt;&amp;lt;label&amp;gt;Campo 1:&amp;lt;/label&amp;gt;

&amp;lt;asp:TextBox ID=&amp;quot;TextBox1&amp;quot; ToolTip=&amp;quot;Introducir Campo 1&amp;quot; runat=&amp;quot;server&amp;quot;&amp;gt;&amp;lt;/asp:TextBox&amp;gt;

&amp;lt;br /&amp;gt;&amp;lt;br /&amp;gt;
&lt;/div&gt;&lt;div class="codigo"&gt;
&amp;lt;label&amp;gt;Campo 2:&amp;lt;/label&amp;gt;

&amp;lt;asp:TextBox ID=&amp;quot;TextBox2&amp;quot; ToolTip=&amp;quot;Introducir Campo 2&amp;quot; runat=&amp;quot;server&amp;quot;&amp;gt;&amp;lt;/asp:TextBox&amp;gt;

&amp;lt;br /&amp;gt;&amp;lt;br /&amp;gt;

&lt;/div&gt;&lt;div class="codigo"&gt;&amp;lt;label&amp;gt;Campo 3:&amp;lt;/label&amp;gt;

&amp;lt;asp:TextBox ID=&amp;quot;TextBox3&amp;quot; ToolTip=&amp;quot;Introducir Campo 3&amp;quot; runat=&amp;quot;server&amp;quot;&amp;gt;&amp;lt;/asp:TextBox&amp;gt;

&lt;/div&gt;&lt;div class="codigo"&gt;&amp;lt;/div&amp;gt;

&lt;/div&gt;&lt;div class="codigo"&gt;&amp;lt;/form&amp;gt;

&lt;/div&gt;&lt;div class="codigo"&gt;&amp;lt;/body&amp;gt;&lt;/div&gt;&lt;div class="codigo"&gt;&amp;nbsp;&lt;/div&gt;
Aunque en los comentarios se explica, esto es lo que hace el código JQuery.

Primero, el mensaje a mostrar como marca de agua lo obtendrá de la propiedad Tooltip si es un TextBox de ASP o de la propiedad title si es un input html. Realmente la propiedad Tooltip de ASP se renderiza como un title, así que en el JQuery trabajaremos con title. Se le asignará el valor de dicha propiedad siempre que el TextBox no tenga datos, si tiene no se aplica la marca de agua.

Segundo. Al obtener el foco el TextBox se le quita la marca de agua y se limpia su contenido.

Tercero. Al perder el foco, si no se ha escrito nada en el TextBox se le vuelve a aplicar la marca de agua.

Por supuesto, cambiando el css podremos adecuar la marca de agua a nuestro propio estilo..

Esto es todo, con una simple llamada en nuestro código tendremos el mismo WaterMark del ControlToolkit, con una sola llamada. Sobre todo cómodo.

&lt;p&gt;&lt;a href="http://webinfo.es/ejemplosjquery/ejemplo8/index.html"&gt;Aquí&lt;/a&gt; puedes ver el ejemplo.&lt;/p&gt;&lt;p&gt;
&lt;a href="http://netcodigo.webinfo.es/wp-content/plugins/wp-downloadMonitor/download.php?id=20"&gt;Aquí&lt;/a&gt; bajar el fuente.&lt;/p&gt;&lt;img src="http://kartones.net/aggbug.aspx?PostID=36002" width="1" height="1"&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/5dq5VZxNCqeFhg2Ptqk21sOcpNQ/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/5dq5VZxNCqeFhg2Ptqk21sOcpNQ/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/5dq5VZxNCqeFhg2Ptqk21sOcpNQ/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/5dq5VZxNCqeFhg2Ptqk21sOcpNQ/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/netcodigoeinternet/~4/rGctaybwfkM" height="1" width="1"/&gt;</description><category domain="http://kartones.net/blogs/netcodigo/archive/tags/ASP.Net/default.aspx">ASP.Net</category><category domain="http://kartones.net/blogs/netcodigo/archive/tags/JQuery/default.aspx">JQuery</category><feedburner:origLink>http://kartones.net/blogs/netcodigo/archive/2009/01/03/watermark-con-jquery.aspx</feedburner:origLink></item><item><title>Comprimir ficheros javascript</title><link>http://feedproxy.google.com/~r/netcodigoeinternet/~3/lD4L5lgspak/comprimir-ficheros-javascript.aspx</link><pubDate>Sat, 03 Jan 2009 12:23:00 GMT</pubDate><guid isPermaLink="false">b86c0850-82e5-42ed-a9d8-bde9e8f94ec1:36001</guid><dc:creator>fsancab</dc:creator><slash:comments>0</slash:comments><wfw:commentRss>http://kartones.net/blogs/netcodigo/rsscomments.aspx?PostID=36001</wfw:commentRss><comments>http://kartones.net/blogs/netcodigo/archive/2009/01/03/comprimir-ficheros-javascript.aspx#comments</comments><description>Ahora que parece (por fin) que el uso de javascript es ya generalizado, podemos hablar de cómo mejorar los tiempos de carga de dichos ficheros.

No debemos dejar de comentar nuestro código, usar retornos de carro, etc. para mejorar su legibilidad. Esto hace que nuestros ficheros js crezcan con lo que su tiempo de carga aumenta. Esto, evidentemente, va en detrimento de nuestras páginas webs aunque no solo pasa los ficheros js, sino con todos.

La solución más sencilla es la compresión de estos ficheros. Existen distintas formas de realizar esta acción. Unas son en línea y otras son desde línea de comandos. Las dos dan el mismo resultado. Así que utilcen las que más cómoda les sea.

Para realizar la compresión existen distintos modos.
&lt;ol&gt;
	&lt;li&gt;Bajo. Borra espacios en blanco, comentarios y line feeds.&lt;/li&gt;
	&lt;li&gt;Medio. Borra espacios en blanco, comentarios y line feeds y codifica palabras a sus valores alfanuméricos.&lt;/li&gt;
	&lt;li&gt;Alta. Borra espacios en blanco, comentarios y line feeds y codifica palabras a sus valores alfanuméricos y recorta nombre de variables.&lt;/li&gt;
&lt;/ol&gt;&lt;p&gt;
Aquí van algunos enlaces.&lt;br /&gt;En línea.
&lt;a href="http://javascriptcompressor.com/" target="_self"&gt;&lt;br /&gt;Javascript Compressor&lt;/a&gt;
&lt;a href="http://www.codeandcoffee.com/2006/10/02/compress-your-javascript/" target="_self"&gt;&lt;br /&gt;Code and Coffe&lt;/a&gt;
&lt;a href="http://www.compressjavascript.com/" target="_self"&gt;&lt;br /&gt;Compress Javascript&lt;/a&gt;
&lt;br /&gt;&lt;a href="http://www.xmlforasp.net/JSCompressor.aspx" target="_self"&gt;Javascript Compressor&lt;/a&gt;

&lt;/p&gt;&lt;p&gt;Línea de comandos.
&lt;a href="http://maas-frensch.com/peter/2006/08/18/javascript-compression-filter/" target="_self"&gt;&lt;br /&gt;log4p&lt;/a&gt;
&lt;a href="http://dean.edwards.name/download/#packer" target="_self"&gt;&lt;br /&gt;deanedwards&lt;/a&gt;
&lt;a href="http://3d2f.com/programs/6-961-html-guardian-download.shtml" target="_self"&gt;&lt;br /&gt;HTMLGuardian&lt;/a&gt;
&lt;a href="http://3d2f.com/programs/14-840-advanced-htmlcoder-download.shtml" target="_self"&gt;&lt;br /&gt;AdvancedCoder&lt;/a&gt;

&lt;/p&gt;&lt;p&gt;Recordar que, antes de comprimir nuestro fichero, hacer una copia del original para no perder el fuente.
&lt;/p&gt;&lt;img src="http://kartones.net/aggbug.aspx?PostID=36001" width="1" height="1"&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/8hERD_3VfqaFeMQnRu3iJL127mk/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/8hERD_3VfqaFeMQnRu3iJL127mk/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/8hERD_3VfqaFeMQnRu3iJL127mk/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/8hERD_3VfqaFeMQnRu3iJL127mk/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/netcodigoeinternet/~4/lD4L5lgspak" height="1" width="1"/&gt;</description><category domain="http://kartones.net/blogs/netcodigo/archive/tags/JavaScript/default.aspx">JavaScript</category><feedburner:origLink>http://kartones.net/blogs/netcodigo/archive/2009/01/03/comprimir-ficheros-javascript.aspx</feedburner:origLink></item><item><title>Habilitar debug javascript Visual Studio 2008</title><link>http://feedproxy.google.com/~r/netcodigoeinternet/~3/_8xtk5hoWZc/habilitar-debug-javascript-visual-studio-2008.aspx</link><pubDate>Sat, 03 Jan 2009 12:22:00 GMT</pubDate><guid isPermaLink="false">b86c0850-82e5-42ed-a9d8-bde9e8f94ec1:36000</guid><dc:creator>fsancab</dc:creator><slash:comments>2</slash:comments><wfw:commentRss>http://kartones.net/blogs/netcodigo/rsscomments.aspx?PostID=36000</wfw:commentRss><comments>http://kartones.net/blogs/netcodigo/archive/2009/01/03/habilitar-debug-javascript-visual-studio-2008.aspx#comments</comments><description>¿Te ha hecho falta alguna vez utilizar el debug para código javascript? Si es así te habrás percatado que no funciona.

Aunque no lo creas la solución para poder activar el debug no es desde Visual Studio, por supuesto el web.config hay que tenerlo en modo debug, la solución pasa por acceder a las opciones del navegador, concretamente a las de internet explorer, sí, que yo sepa, solo funciona con ie.

Debemos acceder al la configuración avanzada del explorador, menú Herramientas-Opciones de Internet-Opciones avanzadas y entre todas las opciones que nos aparecen hemos de &lt;strong&gt;deshabilitar&lt;/strong&gt; la opción &amp;quot;Deshabilitar la depuración de scripts (Internet Explorer)&amp;quot;, esta es la imagen correspondiente.
&lt;p style="text-align:center;"&gt;&lt;a href="http://netcodigo.webinfo.es/wp-content/jsdebugie.gif" title="Debug Javascript" rel="lightbox"&gt;&lt;img src="http://netcodigo.webinfo.es/wp-content/jsdebugie.thumbnail.gif" alt="Debug Javascript" /&gt;&lt;/a&gt;&lt;/p&gt;

Una vez hayamos deshabilitado la opción ya podremos hacer debug en vs2008. Funcionará como a lo que estamos acostumbrados, puntos de ruptura, ventana de comandos, pilas, ejecutar código, asignar valores, etc.
&lt;p style="text-align:center;"&gt;&lt;a href="http://netcodigo.webinfo.es/wp-content/jsdebugie1.gif" title="Debug Javascript" rel="lightbox"&gt;&lt;img src="http://netcodigo.webinfo.es/wp-content/jsdebugie1.thumbnail.gif" alt="Debug Javascript" /&gt;&lt;/a&gt;&lt;/p&gt;

Si alguien conoce algún plugin para Firefox, que lo diga.
&lt;img src="http://kartones.net/aggbug.aspx?PostID=36000" width="1" height="1"&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/ZQjsRsweOTWtLaYP8qeOahlSJpI/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/ZQjsRsweOTWtLaYP8qeOahlSJpI/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/ZQjsRsweOTWtLaYP8qeOahlSJpI/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/ZQjsRsweOTWtLaYP8qeOahlSJpI/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/netcodigoeinternet/~4/_8xtk5hoWZc" height="1" width="1"/&gt;</description><category domain="http://kartones.net/blogs/netcodigo/archive/tags/Visual+Studio+2008/default.aspx">Visual Studio 2008</category><category domain="http://kartones.net/blogs/netcodigo/archive/tags/JavaScript/default.aspx">JavaScript</category><feedburner:origLink>http://kartones.net/blogs/netcodigo/archive/2009/01/03/habilitar-debug-javascript-visual-studio-2008.aspx</feedburner:origLink></item><item><title>Mejorando formulario de contacto con JQuery</title><link>http://feedproxy.google.com/~r/netcodigoeinternet/~3/xokJGTCBD8k/mejorando-formulario-de-contacto-con-jquery.aspx</link><pubDate>Wed, 17 Dec 2008 21:07:00 GMT</pubDate><guid isPermaLink="false">b86c0850-82e5-42ed-a9d8-bde9e8f94ec1:35062</guid><dc:creator>fsancab</dc:creator><slash:comments>0</slash:comments><wfw:commentRss>http://kartones.net/blogs/netcodigo/rsscomments.aspx?PostID=35062</wfw:commentRss><comments>http://kartones.net/blogs/netcodigo/archive/2008/12/17/mejorando-formulario-de-contacto-con-jquery.aspx#comments</comments><description>&lt;p&gt;Después de publicar el post sobre cómo realizar un &lt;a class="" href="http://kartones.net/blogs/netcodigo/archive/2008/12/17/formulario-de-contacto-con-jquery.aspx"&gt;formulario de contacto más dinámico de lo habitual&lt;/a&gt; usando JQuery, y estudiando algo más de JQuery me dí cuenta que el código de dicho post se puede mejorar para no tener que jugar con la posición del formulario. Para no repetir el post estos son los cambios.&lt;/p&gt;
&lt;p&gt;1. Un poco en el css.&lt;/p&gt;
&lt;div class="codigo"&gt;&amp;lt;style type=&amp;quot;text/css&amp;quot;&amp;gt;&lt;br /&gt;#BoxFormContact{top:0;position:absolute;float:right;left:600px;}&lt;br /&gt;#FormContact {width:200px;display:none;}&lt;br /&gt;#BtnContacto {cursor:pointer;display:block;}&lt;br /&gt;&amp;lt;/style&amp;gt;&lt;/div&gt;
&lt;p&gt;2. El código HTML para usar el nuevo estilo.&lt;/p&gt;
&lt;div class="codigo"&gt;&amp;lt;div id=&amp;quot;BoxFormContact&amp;quot;&amp;gt;&lt;br /&gt;&amp;lt;div id=&amp;quot;FormContact&amp;quot;&amp;gt;&lt;br /&gt;&amp;lt;form action=&amp;quot;#&amp;quot;&amp;gt;&lt;br /&gt;&amp;lt;fieldset&amp;gt;&lt;br /&gt;&amp;lt;legend&amp;gt;Formulario de contacto&amp;lt;/legend&amp;gt;&lt;br /&gt;&amp;lt;p&amp;gt;&amp;lt;label for=&amp;quot;name&amp;quot;&amp;gt;Nombre:&amp;lt;/label&amp;gt; &amp;lt;input type=&amp;quot;text&amp;quot; id=&amp;quot;name&amp;quot; /&amp;gt;&amp;lt;/p&amp;gt;&lt;br /&gt;&amp;lt;p&amp;gt;&amp;lt;label for=&amp;quot;e-mail&amp;quot;&amp;gt;E-mail:&amp;lt;/label&amp;gt; &amp;lt;input type=&amp;quot;text&amp;quot; id=&amp;quot;e-mail&amp;quot; /&amp;gt;&amp;lt;br /&amp;gt;&amp;lt;/p&amp;gt;&lt;br /&gt;&amp;lt;p class=&amp;quot;submit&amp;quot;&amp;gt;&amp;lt;input type=&amp;quot;submit&amp;quot; value=&amp;quot;Enviar&amp;quot; /&amp;gt;&amp;lt;/p&amp;gt;&lt;br /&gt;&amp;lt;p class=&amp;quot;submit&amp;quot;&amp;gt;&amp;lt;input type=&amp;quot;button&amp;quot; id=&amp;quot;BtnCancelar&amp;quot; value=&amp;quot;Cancelar&amp;quot; /&amp;gt;&amp;lt;/p&amp;gt;&lt;/div&gt;
&lt;p&gt;&amp;lt;/fieldset&amp;gt;&lt;br /&gt;&amp;lt;/form&amp;gt;&lt;br /&gt;&amp;lt;/div&amp;gt;&lt;br /&gt;&amp;lt;img id=&amp;quot;BtnContacto&amp;quot; src=&amp;quot;img/contactobtn.jpg&amp;quot; width=&amp;quot;197&amp;quot; height=&amp;quot;20&amp;quot; /&amp;gt;&lt;br /&gt;&amp;lt;/div&amp;gt;&lt;/p&gt;
&lt;div&gt;&lt;/div&gt;
&lt;p&gt;3. El código JQuery&lt;/p&gt;
&lt;div class="codigo"&gt;$(document).ready(function() {&lt;/div&gt;
&lt;p&gt;// MUESTRA FORMULARIO&lt;br /&gt;$(&amp;quot;#BtnContacto&amp;quot;).click(function(){&lt;br /&gt;// COMPROBAMOS SI ESTÁ OCULTO O NO&lt;br /&gt;if ($(&amp;quot;#FormContact&amp;quot;).is(&amp;quot;:hidden&amp;quot;))&lt;br /&gt;{&lt;br /&gt;$(&amp;quot;#FormContact&amp;quot;).slideDown(&amp;quot;slow&amp;quot;);&lt;br /&gt;}&lt;br /&gt;else&lt;br /&gt;{&lt;br /&gt;$(&amp;quot;#FormContact&amp;quot;).slideUp(&amp;quot;slow&amp;quot;);&lt;br /&gt;}&lt;/p&gt;
&lt;p&gt;});&lt;/p&gt;
&lt;p&gt;// OCULTA FORMULARIO&lt;br /&gt;$(&amp;quot;#BtnCancelar&amp;quot;).click(function(){&lt;br /&gt;$(&amp;quot;#FormContact&amp;quot;).slideUp(&amp;quot;slow&amp;quot;);&lt;br /&gt;});&lt;/p&gt;
&lt;p&gt;});&lt;/p&gt;
&lt;div&gt;&lt;/div&gt;
&lt;p&gt;&lt;a href="http://webinfo.es/ejemplosjquery/contacto/index.html" target="_self"&gt;Aquí&lt;/a&gt; pueden observar el cambio.&lt;/p&gt;&lt;img src="http://kartones.net/aggbug.aspx?PostID=35062" width="1" height="1"&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/OiKwEKiY31PctJVm0jmK0v0rH1g/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/OiKwEKiY31PctJVm0jmK0v0rH1g/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/OiKwEKiY31PctJVm0jmK0v0rH1g/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/OiKwEKiY31PctJVm0jmK0v0rH1g/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/netcodigoeinternet/~4/xokJGTCBD8k" height="1" width="1"/&gt;</description><category domain="http://kartones.net/blogs/netcodigo/archive/tags/css/default.aspx">css</category><category domain="http://kartones.net/blogs/netcodigo/archive/tags/ASP.Net/default.aspx">ASP.Net</category><category domain="http://kartones.net/blogs/netcodigo/archive/tags/JQuery/default.aspx">JQuery</category><feedburner:origLink>http://kartones.net/blogs/netcodigo/archive/2008/12/17/mejorando-formulario-de-contacto-con-jquery.aspx</feedburner:origLink></item><item><title>Formulario de contacto con JQuery</title><link>http://feedproxy.google.com/~r/netcodigoeinternet/~3/WNUhM8MiAA4/formulario-de-contacto-con-jquery.aspx</link><pubDate>Wed, 17 Dec 2008 21:06:00 GMT</pubDate><guid isPermaLink="false">b86c0850-82e5-42ed-a9d8-bde9e8f94ec1:35061</guid><dc:creator>fsancab</dc:creator><slash:comments>1</slash:comments><wfw:commentRss>http://kartones.net/blogs/netcodigo/rsscomments.aspx?PostID=35061</wfw:commentRss><comments>http://kartones.net/blogs/netcodigo/archive/2008/12/17/formulario-de-contacto-con-jquery.aspx#comments</comments><description>&lt;p&gt;&lt;img class="alignnone size-medium wp-image-342" title="jquery-logo-peq" height="60" alt="" src="http://netcodigo.webinfo.es/wp-content/jquery-logo-peq.gif" width="60" /&gt; Veremos hoy cómo hacer un formulario de contacto que, de entrada está oculto, y mediante animación y JQuery haremos que se muestre. Es una forma distinta de mostrar cosas con JQuery.&lt;/p&gt;
&lt;p&gt;El ejemplo lo pueden ver &lt;a href="http://webinfo.es/ejemplosjquery/contacto/index.html" target="_self"&gt;aquí&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;Para realizar el ejemplo, y como ya es habitual, usaremos css, dom y jquery. Veamos primero el css.&lt;/p&gt;
&lt;div class="codigo"&gt;&amp;lt;style type=&amp;quot;text/css&amp;quot;&amp;gt;&lt;br /&gt;#formulario {position:absolute;top:-215px;left:80%}&lt;br /&gt;#formulario img {cursor:pointer}&amp;lt;/style&amp;gt;&lt;/div&gt;
&lt;p&gt;Muy simple, posicionamos el formulario tal que quede solo a la vista del usuario la imagen para mostrarlo. Para ellos usamos posicionamiento absoluto.&lt;/p&gt;
&lt;p&gt;Ahora el html.&lt;/p&gt;
&lt;div class="codigo"&gt;&amp;lt;div id=&amp;quot;formulario&amp;quot;&amp;gt;&lt;br /&gt;&amp;lt;form action=&amp;quot;#&amp;quot;&amp;gt;&lt;br /&gt;&amp;lt;fieldset&amp;gt;&lt;br /&gt;&amp;lt;legend&amp;gt;Formulario de contacto&amp;lt;/legend&amp;gt;&lt;br /&gt;&amp;lt;p&amp;gt;&amp;lt;label for=&amp;quot;name&amp;quot;&amp;gt;Nombre:&amp;lt;/label&amp;gt; &amp;lt;input type=&amp;quot;text&amp;quot; id=&amp;quot;name&amp;quot; /&amp;gt;&amp;lt;/p&amp;gt;&lt;br /&gt;&amp;lt;p&amp;gt;&amp;lt;label for=&amp;quot;e-mail&amp;quot;&amp;gt;E-mail:&amp;lt;/label&amp;gt; &amp;lt;input type=&amp;quot;text&amp;quot; id=&amp;quot;e-mail&amp;quot; /&amp;gt;&amp;lt;br /&amp;gt;&amp;lt;/p&amp;gt;&lt;br /&gt;&amp;lt;p class=&amp;quot;submit&amp;quot;&amp;gt;&amp;lt;input type=&amp;quot;submit&amp;quot; value=&amp;quot;Enviar&amp;quot; /&amp;gt;&amp;lt;/p&amp;gt;&lt;br /&gt;&amp;lt;p class=&amp;quot;submit&amp;quot;&amp;gt;&amp;lt;input type=&amp;quot;button&amp;quot; id=&amp;quot;BtnCancelar&amp;quot; value=&amp;quot;Cancelar&amp;quot; /&amp;gt;&amp;lt;/p&amp;gt;&lt;/div&gt;
&lt;p&gt;&amp;lt;/fieldset&amp;gt;&lt;br /&gt;&amp;lt;/form&amp;gt;&lt;br /&gt;&amp;lt;img id=&amp;quot;BtnContacto&amp;quot; src=&amp;quot;img/contactobtn.jpg&amp;quot; width=&amp;quot;197&amp;quot; height=&amp;quot;20&amp;quot; /&amp;gt;&lt;br /&gt;&amp;lt;/div&amp;gt;&lt;/p&gt;
&lt;div&gt;&lt;/div&gt;
&lt;p&gt;No tiene ciencia, un sencillo formulario, lo único especial es el botón Cancelar, que lo utilizaremos para ocultar el formulario.&lt;/p&gt;
&lt;p&gt;Y ahora, el código JQuery. Dos sencillos pasos.&lt;br /&gt;1. Asociamos al evento click de la imagen que muestra el formulario la animación para que lo muestre. Primero comprobamos si el formulario ya está mostrado o no, para así realizar la animación de mostrar u ocultar.&lt;br /&gt;2. Asociamos al evento click del botón de cancelar la animación de ocultar el formulario.&lt;/p&gt;
&lt;div class="codigo"&gt;$(document).ready(function() {&lt;/div&gt;
&lt;p&gt;// MUESTRA FORMULARIO&lt;br /&gt;$(&amp;quot;#BtnContacto&amp;quot;).click(function(){&lt;br /&gt;// COMPROBAMOS SI ESTÁ OCULTO O NO&lt;br /&gt;if ($(&amp;quot;#formulario&amp;quot;).css(&amp;quot;top&amp;quot;) == &amp;quot;-215px&amp;quot;)&lt;br /&gt;{&lt;br /&gt;$(&amp;quot;#formulario&amp;quot;).animate({top:(&amp;quot;10px&amp;quot;)},1000);&lt;br /&gt;}&lt;br /&gt;else&lt;br /&gt;{&lt;br /&gt;$(&amp;quot;#formulario&amp;quot;).animate({top:(&amp;quot;-215px&amp;quot;)},1000);&lt;br /&gt;}&lt;/p&gt;
&lt;p&gt;});&lt;/p&gt;
&lt;p&gt;// OCULTA FORMULARIO&lt;br /&gt;$(&amp;quot;#BtnCancelar&amp;quot;).click(function(){&lt;br /&gt;$(&amp;quot;#formulario&amp;quot;).animate({top:(&amp;quot;-215px&amp;quot;)},1000);&lt;br /&gt;});&lt;/p&gt;
&lt;p&gt;});&lt;/p&gt;
&lt;p&gt;&amp;lt;/div&amp;gt;&lt;/p&gt;
&lt;div&gt;&lt;/div&gt;
&lt;p&gt;Hasta aquí.&lt;/p&gt;&lt;img src="http://kartones.net/aggbug.aspx?PostID=35061" width="1" height="1"&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/i94TOaNVyG5Worw9kSRujAIaIqg/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/i94TOaNVyG5Worw9kSRujAIaIqg/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/i94TOaNVyG5Worw9kSRujAIaIqg/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/i94TOaNVyG5Worw9kSRujAIaIqg/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/netcodigoeinternet/~4/WNUhM8MiAA4" height="1" width="1"/&gt;</description><category domain="http://kartones.net/blogs/netcodigo/archive/tags/css/default.aspx">css</category><category domain="http://kartones.net/blogs/netcodigo/archive/tags/ASP.Net/default.aspx">ASP.Net</category><category domain="http://kartones.net/blogs/netcodigo/archive/tags/JQuery/default.aspx">JQuery</category><feedburner:origLink>http://kartones.net/blogs/netcodigo/archive/2008/12/17/formulario-de-contacto-con-jquery.aspx</feedburner:origLink></item><item><title>Añadir imagen a links por tipo. CSS</title><link>http://feedproxy.google.com/~r/netcodigoeinternet/~3/R1SabUaBkAM/a-241-adir-imagen-a-links-por-tipo-css.aspx</link><pubDate>Wed, 17 Dec 2008 21:04:00 GMT</pubDate><guid isPermaLink="false">b86c0850-82e5-42ed-a9d8-bde9e8f94ec1:35059</guid><dc:creator>fsancab</dc:creator><slash:comments>1</slash:comments><wfw:commentRss>http://kartones.net/blogs/netcodigo/rsscomments.aspx?PostID=35059</wfw:commentRss><comments>http://kartones.net/blogs/netcodigo/archive/2008/12/17/a-241-adir-imagen-a-links-por-tipo-css.aspx#comments</comments><description>&lt;p&gt;Lo que quiere decir el título es cómo hacer, por medio de estilos, el que aparezca una imagen en un lateral de los links dependiendo del tipo de destino que sea. Por ejemplo, asociar una imagen a todos los links que abran un pdf, o zip, o png, o lo que sea.&lt;/p&gt;
&lt;p&gt;Es realmente sencillo, el css en cuestión es como este:&lt;/p&gt;
&lt;div class="codigo"&gt;a[href$=&amp;#39;.pdf&amp;#39;] {&lt;br /&gt;display:inline-block;&lt;br /&gt;padding-left:20px;&lt;br /&gt;line-height:18px;&lt;br /&gt;background:transparent url(pdf.png) center left no-repeat;&lt;br /&gt;}&lt;br /&gt;a[href^=&amp;quot;mailto:&amp;quot;] {&lt;br /&gt;display:inline-block;&lt;br /&gt;padding-left:20px;&lt;br /&gt;line-height:18px;&lt;br /&gt;background:transparent url(MailTo.gif) center left no-repeat;&lt;br /&gt;}&lt;/div&gt;
&lt;p&gt;Lo que hace este css es que si encuentra en el link una cadena que sea &amp;quot;.pdf&amp;quot; o &amp;quot;mailto&amp;quot; asociará este código a dicho link. Con esto, lo único que tendremos que hacer es repetir dicho código para cada uno de los tipos de asociaciones que deseemos. El resultado sería como el que sigue:&lt;/p&gt;
&lt;p style="TEXT-ALIGN:center;"&gt;&lt;img class="aligncenter" title="ImgToLinks" alt="ImgToLinks" src="http://netcodigo.webinfo.es/wp-content/imgtolink.png" /&gt;&lt;/p&gt;
&lt;p&gt;Con esto nos podemos olvidar de tener que asociar una imagen a cada link que creemos.&lt;/p&gt;&lt;img src="http://kartones.net/aggbug.aspx?PostID=35059" width="1" height="1"&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/6JboLsNuHHQDHF0w0imLXNmHljw/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/6JboLsNuHHQDHF0w0imLXNmHljw/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/6JboLsNuHHQDHF0w0imLXNmHljw/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/6JboLsNuHHQDHF0w0imLXNmHljw/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/netcodigoeinternet/~4/R1SabUaBkAM" height="1" width="1"/&gt;</description><category domain="http://kartones.net/blogs/netcodigo/archive/tags/css/default.aspx">css</category><feedburner:origLink>http://kartones.net/blogs/netcodigo/archive/2008/12/17/a-241-adir-imagen-a-links-por-tipo-css.aspx</feedburner:origLink></item><item><title>Espectacular. Microsoft Charting Control</title><link>http://feedproxy.google.com/~r/netcodigoeinternet/~3/-3OmIPfL3dA/espectacular-microsoft-charting-control.aspx</link><pubDate>Wed, 17 Dec 2008 21:01:00 GMT</pubDate><guid isPermaLink="false">b86c0850-82e5-42ed-a9d8-bde9e8f94ec1:35058</guid><dc:creator>fsancab</dc:creator><slash:comments>0</slash:comments><wfw:commentRss>http://kartones.net/blogs/netcodigo/rsscomments.aspx?PostID=35058</wfw:commentRss><comments>http://kartones.net/blogs/netcodigo/archive/2008/12/17/espectacular-microsoft-charting-control.aspx#comments</comments><description>&lt;p&gt;Espectacular. Realmente no encuentro otro calificativo para Microsoft Charting Control. En mi opinión, los mejores controles para crear gráficos estadísticos gratuitos que se pueden encontrar en la red.&lt;br /&gt;Permiten una manipulación total sobre los gráficos, incluyendo AJAX. Esta vez, incluso en los ejemplos y la documentación creo que Microsoft lo ha hecho espectacular. Funcionan tanto para ASP.Net como para Windows Forms. Ejemplos:&lt;/p&gt;
&lt;p style="TEXT-ALIGN:center;"&gt;&lt;img class="aligncenter" title="Microsoft Charting Control" alt="Microsoft Charting Control" src="http://netcodigo.webinfo.es/wp-content/mchart1.jpg" /&gt;&lt;br /&gt;&lt;img title="Microsoft Charting Control" alt="Microsoft Charting Control" src="http://netcodigo.webinfo.es/wp-content/mchart2.gif" /&gt; &lt;img title="Microsoft Charting Control" alt="Microsoft Charting Control" src="http://netcodigo.webinfo.es/wp-content/mchart3.gif" /&gt;&lt;/p&gt;
&lt;p&gt;El único incoveniente es que se necesita Microsoft .Net Framework 3.5 SP1&lt;br /&gt;Estos son los links.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href="http://www.microsoft.com/downloads/details.aspx?FamilyID=130f7986-bf49-4fe5-9ca8-910ae6ea442c&amp;amp;DisplayLang=en" target="_blank"&gt;Microsoft Chart Controls&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="http://www.microsoft.com/downloads/details.aspx?familyid=1D69CE13-E1E5-4315-825C-F14D33A303E9&amp;amp;displaylang=en" target="_blank"&gt;VS 2008 Tool Support for the Chart Controls&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="http://code.msdn.microsoft.com/mschart/Release/ProjectReleases.aspx?ReleaseId=1591" target="_blank"&gt;Microsoft Chart Controls Samples&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="http://www.microsoft.com/downloads/details.aspx?FamilyId=EE8F6F35-B087-4324-9DBA-6DD5E844FD9F&amp;amp;displaylang=en" target="_blank"&gt;Microsoft Chart Controls Documentation&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="http://social.msdn.microsoft.com/Forums/en-US/MSWinWebChart/threads/" target="_blank"&gt;Microsoft Chart Control Forum&lt;/a&gt;&lt;/li&gt;&lt;/ul&gt;&lt;img src="http://kartones.net/aggbug.aspx?PostID=35058" width="1" height="1"&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/PLIRQ7Z-hSTsKb5ZEvcX_EE9QGI/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/PLIRQ7Z-hSTsKb5ZEvcX_EE9QGI/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/PLIRQ7Z-hSTsKb5ZEvcX_EE9QGI/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/PLIRQ7Z-hSTsKb5ZEvcX_EE9QGI/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/netcodigoeinternet/~4/-3OmIPfL3dA" height="1" width="1"/&gt;</description><category domain="http://kartones.net/blogs/netcodigo/archive/tags/Ajax/default.aspx">Ajax</category><category domain="http://kartones.net/blogs/netcodigo/archive/tags/VB.Net/default.aspx">VB.Net</category><category domain="http://kartones.net/blogs/netcodigo/archive/tags/ASP.Net/default.aspx">ASP.Net</category><category domain="http://kartones.net/blogs/netcodigo/archive/tags/Windows+Forms+/default.aspx">Windows Forms </category><feedburner:origLink>http://kartones.net/blogs/netcodigo/archive/2008/12/17/espectacular-microsoft-charting-control.aspx</feedburner:origLink></item><item><title>Consumir RSS Feeds</title><link>http://feedproxy.google.com/~r/netcodigoeinternet/~3/gzucqx9h3SQ/consumir-rss-feeds.aspx</link><pubDate>Wed, 17 Dec 2008 20:57:00 GMT</pubDate><guid isPermaLink="false">b86c0850-82e5-42ed-a9d8-bde9e8f94ec1:35056</guid><dc:creator>fsancab</dc:creator><slash:comments>0</slash:comments><wfw:commentRss>http://kartones.net/blogs/netcodigo/rsscomments.aspx?PostID=35056</wfw:commentRss><comments>http://kartones.net/blogs/netcodigo/archive/2008/12/17/consumir-rss-feeds.aspx#comments</comments><description>&lt;p&gt;Veremos en este post cómo consumir una fuente de datos rss feeds, concretamente con su última versión, la 2.0. Para conocer más sobre rss feeds pueden visitar la web de &lt;a href="http://validator.w3.org/feed/docs/rss2.html" target="_blank"&gt;w3c&lt;/a&gt; que trata sobre el tema.&lt;br /&gt;El consumo de esta fuente de datos se puede realizar con distintos controles de servidor que nos provee asp.net, datalist, gridview o repeater. Para este post usaremos el control &lt;a href="http://msdn.microsoft.com/es-es/library/x8f2zez5.aspx" target="_blank"&gt;repeater&lt;/a&gt; ya que nunca he hablado de él. Es un control contenedor enlazado a datos que genera una lista de elementos individuales, en nuestro caso, estos elementos serán cada uno de los registros que nos devuelva la fuente de feeds. Nos permite utilizar plantillas para albergar contenido, usaremos una tabla para ello. Las plantillas que provee son:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;ItemTemplate. Usado para diseñar cada row impar.&lt;/li&gt;
&lt;li&gt;AlternatingItemTemplate. Usado para diseñar cada row par.&lt;/li&gt;
&lt;li&gt;HeaderTemplate y FooterTemplate. Usado para diseñar la cabecera y el pie.&lt;/li&gt;
&lt;li&gt;SeparatorTemplate. Usado para diseñar los separadores entre dos elementos.&lt;/li&gt;&lt;/ol&gt;
&lt;p&gt;También proporciona eventos para todo el control del mismo. En esta ocasión no nos hará falta usar ningún evento. El elemento DOM que usaremos para incrustrar en el control repeater será un table.&lt;/p&gt;
&lt;p&gt;Enlace con la fuente de datos.&lt;/p&gt;
&lt;p&gt;&lt;a title="Consumir RSS Feeds" href="http://netcodigo.webinfo.es/wp-content/rssfeds.gif" rel="lightbox"&gt;&lt;img alt="Consumir RSS Feeds" src="http://netcodigo.webinfo.es/wp-content/rssfeds.thumbail.gif" /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;El archivo de datos debe apuntar a la url que nos proporcione la fuente de feeds y el separador de cada registro será el elemento item de la especificación 2.0 de feeds. Simplemente con esto ya tenemos configurado el origen de datos.&lt;/p&gt;
&lt;p&gt;Ahora diseñemos el control repeater. Es muy sencillo, incluiremos en cada plantilla del control los elementos necesarios para su correcta visualización, he incluido algo de estilos para que no quede muy feo.&lt;/p&gt;
&lt;p&gt;CSS.&lt;/p&gt;
&lt;div class="codigo"&gt;&amp;lt;style type=&amp;quot;text/css&amp;quot;&amp;gt;&lt;br /&gt;#table-rss&lt;br /&gt;{&lt;br /&gt;font-family: &amp;quot;Lucida Sans Unicode&amp;quot;, &amp;quot;Lucida Grande&amp;quot;, Sans-Serif;&lt;br /&gt;font-size: 12px;&lt;br /&gt;width: 600px;&lt;br /&gt;text-align: left;&lt;br /&gt;border-collapse: collapse;&lt;br /&gt;background: #e8edff;&lt;br /&gt;}&lt;/div&gt;
&lt;p&gt;#table-rss th tr&lt;br /&gt;{&lt;br /&gt;padding: 8px;&lt;br /&gt;font-weight: normal;&lt;br /&gt;font-size: 13px;&lt;br /&gt;color: #039;&lt;br /&gt;background: #b9c9fe;&lt;br /&gt;}&lt;/p&gt;
&lt;p&gt;#table-rss td&lt;br /&gt;{&lt;br /&gt;padding: 8px;&lt;br /&gt;border-top: 1px solid #fff;&lt;br /&gt;color: #669;&lt;br /&gt;}&lt;br /&gt;#table-rss .normal&lt;br /&gt;{&lt;br /&gt;background: #e8edff;&lt;br /&gt;}&lt;br /&gt;#table-rss .alternate&lt;br /&gt;{&lt;br /&gt;background: #b9c9fe;&lt;br /&gt;}&lt;/p&gt;
&lt;p&gt;&amp;lt;/style&amp;gt;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;Cuando vean el resultado recuerden lo mal diseñador que soy....&lt;/p&gt;
&lt;p&gt;Ahora el código del repeater:&lt;/p&gt;
&lt;div class="codigo"&gt;&amp;lt;asp:Repeater ID=&amp;quot;Repeater1&amp;quot; runat=&amp;quot;server&amp;quot; DataSourceID=&amp;quot;XmlDataSource1&amp;quot;&amp;gt;&lt;br /&gt;&amp;lt;HeaderTemplate&amp;gt;&lt;br /&gt;&amp;lt;table id=&amp;quot;table-rss&amp;quot;&amp;gt;&lt;br /&gt;&amp;lt;thead&amp;gt;&lt;br /&gt;&amp;lt;tr&amp;gt;&lt;br /&gt;&amp;lt;th style=&amp;quot;width:15%;&amp;quot;&amp;gt;Fecha Publ.&amp;lt;/th&amp;gt;&lt;br /&gt;&amp;lt;th style=&amp;quot;width:35%;&amp;quot;&amp;gt;Título&amp;lt;/th&amp;gt;&lt;br /&gt;&amp;lt;th style=&amp;quot;width:50%;&amp;quot;&amp;gt;Resumen&amp;lt;/th&amp;gt;&lt;br /&gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;&amp;lt;/thead&amp;gt;&lt;br /&gt;&amp;lt;/HeaderTemplate&amp;gt;&lt;br /&gt;&amp;lt;ItemTemplate&amp;gt;&lt;br /&gt;&amp;lt;tbody&amp;gt;&lt;br /&gt;&amp;lt;tr&amp;gt;&lt;br /&gt;&amp;lt;td class=&amp;quot;normal&amp;quot;&amp;gt;&lt;br /&gt;&amp;lt;asp:Label runat=&amp;quot;server&amp;quot; ID=&amp;quot;Label1&amp;quot; Text=&amp;#39;&amp;lt;%# System.Convert.ToDateTime(XPath(&amp;quot;pubDate&amp;quot;)).ToString(&amp;quot;dd/MMM/yyyy hh:mm&amp;quot;) %&amp;gt;&amp;#39; /&amp;gt;&lt;br /&gt;&amp;lt;/td&amp;gt;&lt;br /&gt;&amp;lt;td class=&amp;quot;normal&amp;quot;&amp;gt;&lt;br /&gt;&amp;lt;asp:HyperLink ID=&amp;quot;HyperLink1&amp;quot; Runat=&amp;quot;server&amp;quot; Text=&amp;#39;&amp;lt;%# XPath(&amp;quot;title&amp;quot;) %&amp;gt;&amp;#39; NavigateUrl=&amp;#39;&amp;lt;%# XPath(&amp;quot;link&amp;quot;) %&amp;gt;&amp;#39;&lt;br /&gt;Target=&amp;quot;_blank&amp;quot; Font-Names=&amp;quot;Verdana&amp;quot; Font-Size=&amp;quot;X-Small&amp;quot;&amp;gt;&amp;lt;/asp:HyperLink&amp;gt;&lt;br /&gt;&amp;lt;/td&amp;gt;&lt;br /&gt;&amp;lt;td class=&amp;quot;normal&amp;quot;&amp;gt;&lt;br /&gt;&amp;lt;asp:Label runat=&amp;quot;server&amp;quot; ID=&amp;quot;Label5&amp;quot; Text=&amp;#39;&amp;lt;%# XPath(&amp;quot;description&amp;quot;) %&amp;gt;&amp;#39; /&amp;gt;&lt;br /&gt;&amp;lt;/td&amp;gt;&lt;br /&gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;&amp;lt;/tbody&amp;gt;&lt;br /&gt;&amp;lt;/ItemTemplate&amp;gt;&lt;br /&gt;&amp;lt;AlternatingItemTemplate&amp;gt;&lt;br /&gt;&amp;lt;tbody id=&amp;quot;alternate&amp;quot;&amp;gt;&lt;br /&gt;&amp;lt;tr&amp;gt;&lt;br /&gt;&amp;lt;td class=&amp;quot;alternate&amp;quot;&amp;gt;aabbb&lt;br /&gt;&amp;lt;asp:Label runat=&amp;quot;server&amp;quot; ID=&amp;quot;Label1&amp;quot; Text=&amp;#39;&amp;lt;%# System.Convert.ToDateTime(XPath(&amp;quot;pubDate&amp;quot;)).ToString(&amp;quot;dd/MMM/yyyy hh:mm&amp;quot;) %&amp;gt;&amp;#39; /&amp;gt;&lt;br /&gt;&amp;lt;/td&amp;gt;&lt;br /&gt;&amp;lt;td class=&amp;quot;alternate&amp;quot;&amp;gt;&lt;br /&gt;&amp;lt;asp:HyperLink ID=&amp;quot;HyperLink1&amp;quot; Runat=&amp;quot;server&amp;quot; Text=&amp;#39;&amp;lt;%# XPath(&amp;quot;title&amp;quot;) %&amp;gt;&amp;#39; NavigateUrl=&amp;#39;&amp;lt;%# XPath(&amp;quot;link&amp;quot;) %&amp;gt;&amp;#39;&lt;br /&gt;Target=&amp;quot;_blank&amp;quot; Font-Names=&amp;quot;Verdana&amp;quot; Font-Size=&amp;quot;X-Small&amp;quot;&amp;gt;&amp;lt;/asp:HyperLink&amp;gt;&lt;br /&gt;&amp;lt;/td&amp;gt;&lt;br /&gt;&amp;lt;td class=&amp;quot;alternate&amp;quot;&amp;gt;&lt;br /&gt;&amp;lt;asp:Label runat=&amp;quot;server&amp;quot; ID=&amp;quot;Label5&amp;quot; Text=&amp;#39;&amp;lt;%# XPath(&amp;quot;description&amp;quot;) %&amp;gt;&amp;#39; /&amp;gt;&lt;br /&gt;&amp;lt;/td&amp;gt;&lt;br /&gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;&amp;lt;/tbody&amp;gt;&lt;br /&gt;&amp;lt;/AlternatingItemTemplate&amp;gt;&lt;br /&gt;&amp;lt;FooterTemplate&amp;gt;&lt;br /&gt;&amp;lt;tfoot&amp;gt;&lt;br /&gt;&amp;lt;tr&amp;gt;&lt;br /&gt;&amp;lt;td colspan=&amp;quot;3&amp;quot;&amp;gt;Ejemplo de consumo de Feeds 2.0&amp;lt;/td&amp;gt;&lt;br /&gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;&amp;lt;/tfoot&amp;gt;&lt;br /&gt;&amp;lt;/table&amp;gt;&lt;br /&gt;&amp;lt;/FooterTemplate&amp;gt;&lt;br /&gt;&amp;lt;/asp:Repeater&amp;gt;&lt;/div&gt;
&lt;p&gt;Una imagen del resultado:&lt;/p&gt;
&lt;p&gt;&lt;a title="Consumir RSS Feeds" href="http://netcodigo.webinfo.es/wp-content/rssfeds2.gif" rel="lightbox"&gt;&lt;img alt="Consumir RSS Feeds" src="http://netcodigo.webinfo.es/wp-content/rssfeds2.thumbail.gif" /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Esto es todo.&lt;/p&gt;&lt;img src="http://kartones.net/aggbug.aspx?PostID=35056" width="1" height="1"&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/-od-VDOSVmS8sjGkAIfj8Emjh5w/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/-od-VDOSVmS8sjGkAIfj8Emjh5w/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/-od-VDOSVmS8sjGkAIfj8Emjh5w/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/-od-VDOSVmS8sjGkAIfj8Emjh5w/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/netcodigoeinternet/~4/gzucqx9h3SQ" height="1" width="1"/&gt;</description><category domain="http://kartones.net/blogs/netcodigo/archive/tags/css/default.aspx">css</category><category domain="http://kartones.net/blogs/netcodigo/archive/tags/JavaScript/default.aspx">JavaScript</category><category domain="http://kartones.net/blogs/netcodigo/archive/tags/ASP.Net/default.aspx">ASP.Net</category><feedburner:origLink>http://kartones.net/blogs/netcodigo/archive/2008/12/17/consumir-rss-feeds.aspx</feedburner:origLink></item></channel></rss>
