<?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>sandromark78 &#187; xHTML</title>
	<atom:link href="http://sandromark78.it/tag/xhtml/feed/" rel="self" type="application/rss+xml" />
	<link>http://sandromark78.it</link>
	<description>The official blog of &#34;Sandro Marcon&#34;</description>
	<lastBuildDate>Wed, 07 Apr 2010 21:34:04 +0000</lastBuildDate>
	<generator>http://wordpress.org/?v=2.9.2</generator>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
			<item>
		<title>Web-page: cambio testo ad intervalli</title>
		<link>http://sandromark78.it/informationtechnology/web-page-cambio-testo-ad-intervalli/</link>
		<comments>http://sandromark78.it/informationtechnology/web-page-cambio-testo-ad-intervalli/#comments</comments>
		<pubDate>Thu, 09 Apr 2009 15:05:14 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[IT]]></category>
		<category><![CDATA[JavaScript]]></category>
		<category><![CDATA[xHTML]]></category>

		<guid isPermaLink="false">http://sandromark78.it/?p=160</guid>
		<description><![CDATA[Spesso, in una web-page, può risultare molto utile alternare diverse scritte di testo in determinate aree: lo scopo, aggiungendo i necessari fogli di stile (CSS) può essere quello di ottenere una sorta di bacheca/display con informazioni che cambiano ad intervalli regolari.
La cosa può essere fatta senza troppa fatica utilizzando, lato client, le dovute funzioni javascript. [...]]]></description>
			<content:encoded><![CDATA[<p>Spesso, in una web-page, può risultare molto utile alternare diverse scritte di testo in determinate aree: lo scopo, aggiungendo i necessari fogli di stile (CSS) può essere quello di ottenere una sorta di bacheca/display con informazioni che cambiano ad intervalli regolari.</p>
<p>La cosa può essere fatta senza troppa fatica utilizzando, lato client, le dovute funzioni javascript. Ovviamente, se le stringhe da alternare sono contenute nel codice (javascript), si va a perdere “materiale informativo”: in sostanza Google indicizzerà il sito in questione senza “valutare” le stringhe di testo aggiunte “by code” (lato client attraverso javascript).</p>
<p>Requisito: tutte le nostre stringhe che si alterneranno nella parte di visualizzazione dovranno, per forza di cose, essere presenti nel markup della pagina.</p>
<p>Qui di seguito espongo la mia soluzione, o meglio, l’inizio della mia soluzione: tempo permettendo spero di poter ampliare il codice riportato sotto fino ad ottenere una sorta di mini-libreria. Obiettivi finali del progetto:</p>
<ul>
<li> realizzare una soluzione “multi standard” che supporti sia pagine statiche (XHTML) che pagine dinamiche (ASP.NET e PHP);</li>
<li> ottenere una soluzione flessibile che permetta di definire il testo in un file XML (per le pagine dinamiche);</li>
<li> appoggiarsi alla libreria javascript <a href="http://jquery.com/" target="_blank">jQuery</a>.</li>
</ul>
<p>Ecco la mia soluzione allo stato embrionale.</p>
<pre class="brush: jscript;">
var current = -1
var max;

function timerEvent()
{
var Div = document.getElementById(&quot;bacheca&quot;);

if(Div != null)
{
var i;
var count;

if(current &lt; 0)
{
for (i = 0, count = 0; i &lt; Div.childNodes.length; ++i)
{
if(Div.childNodes[i].tagName == &quot;DIV&quot;)
{
if(count &lt; 1)
{
showDiv(Div.childNodes[i]);
}
else
{
hideDiv(Div.childNodes[i]);
}

++count;
}
}

current = 0;
max = count;
}
else
{
++current;
if(current &gt;= max)
{
current = 0;
}

for (i = 0, count = 0; i &lt; Div.childNodes.length; ++i)
{
if(Div.childNodes[i].tagName == &quot;DIV&quot;)
{
if(count == current)
{
showDiv(Div.childNodes[i]);
}
else
{
hideDiv(Div.childNodes[i]);
}

++count;
}
}
}
setTimeout(timerEvent, 5000);
}
}

function showDiv(obj)
{
obj.style.display = &quot;&quot;;
}

function hideDiv(obj)
{
obj.style.display = &quot;none&quot;;
}
</pre>
<pre class="brush: xml;">
&lt;div id=&quot;bacheca&quot; style=&quot;height: 140px;&quot;&gt;
&lt;div&gt;Text 0&lt;/div&gt;
&lt;div&gt;Text 1&lt;/div&gt;
&lt;div&gt;Text 2&lt;/div&gt;
&lt;div&gt;...&lt;/div&gt;
&lt;div&gt;Text n&lt;/div&gt;
&lt;/div&gt;
</pre>
<p>La funzione javascript [timerEvent] va collegata all’evento [onLoad] della pagina. Saranno visualizzate alternativamente ed in successione i vari DIV (contenuti nel DIV con id &#8220;bacheca&#8221;), quindi avremo: “Text 0”, “Text 1”, “Text 2”, …, “Text n”, “Text 0”, … Ovviamente il DIV “contenitore” va impostato ad un’altezza predefinita se si vogliono evitare ridimensionamenti (e riposizionamenti) ad ogni “cambio testo”.</p>
<p>In questo esmpio, il testo viene cambiato ogni 5 secondi (vedere linea 60 di codice javascript).</p>



Share and Enjoy:


	<a rel="nofollow"  href="http://www.facebook.com/share.php?u=http%3A%2F%2Fsandromark78.it%2Finformationtechnology%2Fweb-page-cambio-testo-ad-intervalli%2F&amp;t=Web-page%3A%20cambio%20testo%20ad%20intervalli" title="Facebook"><img src="http://sandromark78.it/wp-content/plugins/sociable/images/facebook.png" title="Facebook" alt="Facebook" class="sociable-hovers" /></a>
	<a rel="nofollow"  href="http://twitter.com/home?status=Web-page%3A%20cambio%20testo%20ad%20intervalli%20-%20http%3A%2F%2Fsandromark78.it%2Finformationtechnology%2Fweb-page-cambio-testo-ad-intervalli%2F" title="Twitter"><img src="http://sandromark78.it/wp-content/plugins/sociable/images/twitter.png" title="Twitter" alt="Twitter" class="sociable-hovers" /></a>
	<a rel="nofollow"  href="http://delicious.com/post?url=http%3A%2F%2Fsandromark78.it%2Finformationtechnology%2Fweb-page-cambio-testo-ad-intervalli%2F&amp;title=Web-page%3A%20cambio%20testo%20ad%20intervalli&amp;notes=Spesso%2C%20in%20una%20web-page%2C%20pu%C3%B2%20risultare%20molto%20utile%20alternare%20diverse%20scritte%20di%20testo%20in%20determinate%20aree%3A%20lo%20scopo%2C%20aggiungendo%20i%20necessari%20fogli%20di%20stile%20%28CSS%29%20pu%C3%B2%20essere%20quello%20di%20ottenere%20una%20sorta%20di%20bacheca%2Fdisplay%20con%20informazioni%20che%20cambia" title="del.icio.us"><img src="http://sandromark78.it/wp-content/plugins/sociable/images/delicious.png" title="del.icio.us" alt="del.icio.us" class="sociable-hovers" /></a>
	<a rel="nofollow"  href="http://www.linkedin.com/shareArticle?mini=true&amp;url=http%3A%2F%2Fsandromark78.it%2Finformationtechnology%2Fweb-page-cambio-testo-ad-intervalli%2F&amp;title=Web-page%3A%20cambio%20testo%20ad%20intervalli&amp;source=sandromark78+The+official+blog+of+%26quot%3BSandro+Marcon%26quot%3B&amp;summary=Spesso%2C%20in%20una%20web-page%2C%20pu%C3%B2%20risultare%20molto%20utile%20alternare%20diverse%20scritte%20di%20testo%20in%20determinate%20aree%3A%20lo%20scopo%2C%20aggiungendo%20i%20necessari%20fogli%20di%20stile%20%28CSS%29%20pu%C3%B2%20essere%20quello%20di%20ottenere%20una%20sorta%20di%20bacheca%2Fdisplay%20con%20informazioni%20che%20cambia" title="LinkedIn"><img src="http://sandromark78.it/wp-content/plugins/sociable/images/linkedin.png" title="LinkedIn" alt="LinkedIn" class="sociable-hovers" /></a>


<br/><br/>]]></content:encoded>
			<wfw:commentRss>http://sandromark78.it/informationtechnology/web-page-cambio-testo-ad-intervalli/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Best Practice in JavaScript e xHTML</title>
		<link>http://sandromark78.it/informationtechnology/best-practice-in-javascript-e-xhtml/</link>
		<comments>http://sandromark78.it/informationtechnology/best-practice-in-javascript-e-xhtml/#comments</comments>
		<pubDate>Mon, 27 Oct 2008 13:50:40 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[IT]]></category>
		<category><![CDATA[Google]]></category>
		<category><![CDATA[JavaScript]]></category>
		<category><![CDATA[jQuery]]></category>
		<category><![CDATA[xHTML]]></category>

		<guid isPermaLink="false">http://sandromark78.it/?p=63</guid>
		<description><![CDATA[Giusto un mese fa, in Smashing Magazine, è comparso un post (che usa come &#8220;base della discussione&#8221; anche la libreria JavaScript jQuery) interessante che riporta una serie di linee guida nell&#8217;uso di JavaScript: in particolare viene posta molta attenzione sulla possibilità che il browser non sia in grado di eseguire il codice JavaScript (come spesso [...]]]></description>
			<content:encoded><![CDATA[<p>Giusto un mese fa, in <a href="http://www.smashingmagazine.com/" target="_blank">Smashing Magazine,</a> è comparso un <a href="http://www.smashingmagazine.com/2008/09/16/jquery-examples-and-best-practices/" target="_blank">post</a> (che usa come &#8220;base della discussione&#8221; anche la libreria JavaScript <a href="http://jquery.com/" target="_blank">jQuery</a>) interessante che riporta una serie di linee guida nell&#8217;uso di JavaScript: in particolare viene posta molta attenzione sulla possibilità che il browser non sia in grado di eseguire il codice JavaScript (come spesso accade in molti PDA).</p>
<p>La mia attenzione è stata catturata in particolare dalla regola numero 2: <em>NEVER Depend on Javascript</em>.</p>
<p><em>Bad practice</em></p>
<pre class="brush: jscript;">
&lt;script language=&quot;javascript&quot;&gt;
var now = new Date();
if(now.getHours() &lt; 12)
document.write('Good Morning!');
else
document.write('Good Afternoon!');
&lt;/script&gt;
</pre>
<p><em>Soluzione proposta</em></p>
<pre class="brush: xml;">
&lt;p title=&quot;Good Day Message&quot;&gt;Good Morning!&lt;/p&gt;
</pre>
<pre class="brush: jscript;">
var now = new Date();
if(now.getHours() &gt;= 12)
{
var goodDay = $('p[title=&quot;Good Day Message&quot;]');
goodDay.text('Good Afternoon!');
}
</pre>
<p>Non sono molto d&#8217;accordo circa il best practice proposto, motivo: una parte dei contenuti viene ancora generata dinamicamente via JavaScript , sottraendo quindi questi ultmi all&#8217;indicizzazione da parte dei motri di ricerca (ricordo che i motori di ricerca non &#8220;eseguono&#8221; gli script presenti o &#8220;invocati&#8221; nella pagina). In sostanza, come sostiene da tempo il mio caro amico <a href="http://francesco.boschian.googlepages.com/" target="_blank">Francesco Boschian</a>: tutti i contenuti devono essere sempre presenti nella pagina, non generati &#8220;dinamicamente&#8221; via scripting (vedere come buon esempio il sito della <a href="http://www.apple.com/" target="_blank">Apple</a>).</p>
<p>Qui di seguito propongo una soluzione molto &#8220;artiginale e grezza&#8221;, ma che nella sua modestia rappresenta un valido workaround per aggirare la cosa.</p>
<pre class="brush: xml;">
&lt;input type=&quot;hidden&quot; id=&quot;str1&quot; value=&quot;Good morning!&quot; /&gt;
&lt;input type=&quot;hidden&quot; id=&quot;str2&quot; value=&quot;Good afternoon!&quot; /&gt;
&lt;p title=&quot;msg&quot;&gt;Good Morning!&lt;/p&gt;
</pre>
<pre class="brush: jscript;">
var now = new Date();
if(now.getHours() &gt;= 12)
{
var toSet = $('#str2').value;
}
else
{
var toSet = $('#str1').value;
}
var msg = $('#msg');
msg.text(toSet);
</pre>
<p>Evidente, purtroppo, la ripetizione della stringa &#8220;Good morning!&#8221;. Se però lato server possiamo sfruttare famework quali PHP o Asp.Net, il codice può diventare assai più &#8220;gradevole alla vista&#8221; .</p>



Share and Enjoy:


	<a rel="nofollow"  href="http://www.facebook.com/share.php?u=http%3A%2F%2Fsandromark78.it%2Finformationtechnology%2Fbest-practice-in-javascript-e-xhtml%2F&amp;t=%20Best%20Practice%20in%20JavaScript%20e%20xHTML" title="Facebook"><img src="http://sandromark78.it/wp-content/plugins/sociable/images/facebook.png" title="Facebook" alt="Facebook" class="sociable-hovers" /></a>
	<a rel="nofollow"  href="http://twitter.com/home?status=%20Best%20Practice%20in%20JavaScript%20e%20xHTML%20-%20http%3A%2F%2Fsandromark78.it%2Finformationtechnology%2Fbest-practice-in-javascript-e-xhtml%2F" title="Twitter"><img src="http://sandromark78.it/wp-content/plugins/sociable/images/twitter.png" title="Twitter" alt="Twitter" class="sociable-hovers" /></a>
	<a rel="nofollow"  href="http://delicious.com/post?url=http%3A%2F%2Fsandromark78.it%2Finformationtechnology%2Fbest-practice-in-javascript-e-xhtml%2F&amp;title=%20Best%20Practice%20in%20JavaScript%20e%20xHTML&amp;notes=Giusto%20un%20mese%20fa%2C%20in%20Smashing%20Magazine%2C%20%C3%A8%20comparso%20un%20post%20%28che%20usa%20come%20%22base%20della%20discussione%22%20anche%20la%20libreria%20JavaScript%20jQuery%29%20interessante%20che%20riporta%20una%20serie%20di%20linee%20guida%20nell%27uso%20di%20JavaScript%3A%20in%20particolare%20viene%20posta%20molta%20attenz" title="del.icio.us"><img src="http://sandromark78.it/wp-content/plugins/sociable/images/delicious.png" title="del.icio.us" alt="del.icio.us" class="sociable-hovers" /></a>
	<a rel="nofollow"  href="http://www.linkedin.com/shareArticle?mini=true&amp;url=http%3A%2F%2Fsandromark78.it%2Finformationtechnology%2Fbest-practice-in-javascript-e-xhtml%2F&amp;title=%20Best%20Practice%20in%20JavaScript%20e%20xHTML&amp;source=sandromark78+The+official+blog+of+%26quot%3BSandro+Marcon%26quot%3B&amp;summary=Giusto%20un%20mese%20fa%2C%20in%20Smashing%20Magazine%2C%20%C3%A8%20comparso%20un%20post%20%28che%20usa%20come%20%22base%20della%20discussione%22%20anche%20la%20libreria%20JavaScript%20jQuery%29%20interessante%20che%20riporta%20una%20serie%20di%20linee%20guida%20nell%27uso%20di%20JavaScript%3A%20in%20particolare%20viene%20posta%20molta%20attenz" title="LinkedIn"><img src="http://sandromark78.it/wp-content/plugins/sociable/images/linkedin.png" title="LinkedIn" alt="LinkedIn" class="sociable-hovers" /></a>


<br/><br/>]]></content:encoded>
			<wfw:commentRss>http://sandromark78.it/informationtechnology/best-practice-in-javascript-e-xhtml/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>
