<?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>Red-Pill Blog &#187; JavaScript</title>
	<atom:link href="http://blog.red-pill.cz/category/programovani/javascript/feed/" rel="self" type="application/rss+xml" />
	<link>http://blog.red-pill.cz</link>
	<description>Blog o internetu, programování a jiných věcech…</description>
	<lastBuildDate>Thu, 29 Apr 2010 13:20:39 +0000</lastBuildDate>
	<generator>http://wordpress.org/?v=2.8</generator>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
			<item>
		<title>Google Analytics a dvoupísmenná doména</title>
		<link>http://blog.red-pill.cz/2007/08/03/google-analytics-a-dvoupismenna-domena/</link>
		<comments>http://blog.red-pill.cz/2007/08/03/google-analytics-a-dvoupismenna-domena/#comments</comments>
		<pubDate>Fri, 03 Aug 2007 12:40:01 +0000</pubDate>
		<dc:creator>petr.kratina</dc:creator>
				<category><![CDATA[Google]]></category>
		<category><![CDATA[Internet]]></category>
		<category><![CDATA[JavaScript]]></category>

		<guid isPermaLink="false">http://blog.red-pill.cz/2007/08/03/google-analytics-a-dvoupismenna-domena/</guid>
		<description><![CDATA[
<!-- by Texy2! -->]]></description>
			<content:encoded><![CDATA[
<p style="text-align: justify;">Je to už více jak rok kdy jsme spustili obchod
na doméně <a href="http://www.sw.cz/?origin=redpill" target="_blank">SW.cz</a>
(původně shop.stahuj.cz) a bohužel od té doby nám přestal fungovat
geniální systém na analýzu návštěvnosti – Google Analytics. Né že by
data přestala téct úplně, ale procento uživatelů Internet Exploreru
„pokleslo“ z nějakých 70–80% na 0.1–0.3% – to znamená že
uživatele používající IE prakticky přestali být monitorováni.</p>

<p style="text-align: justify;">Dlouho (do dnešního dne) jsme si s tím
nevěděly rady, hledali na fórech a diskusních skupinách, nesčetněkrát se
snažili komunikovat s Google, ale vždy se nám dostalo odpovědi: Děkujeme
za upozornění, naši inženýři na problém pracují.</p>

<p style="text-align: justify;">Dnes jsem po delší době opět zavítal na GA
Discussion Group a co jsem nenašel – odpověď na náš problém, se kterým
se setkal i administrátor webu <a href="http://www.xx.nl/"
target="_blank">http://www.xx.nl/</a> a ten přišel na to co se děje. IE
totiž neumí uložit Cookie s dvoupísmenným názvem domény (tedy např.
„sw.cz“) ale nedělá mu problém uložit Cookie s „www.sw.cz“.
Řešení je tedy poměrně jednoduché, do měřícího kódu stačí vložit
parametr, který UrchinTrackeru řekne jakou má ukládat sušenku, kód pak
vypadá nějak takto:</p>
 <code style="overflow-x: scroll;"></code>
<div style="width: 750px;">&lt;script
src=„http://w­ww.google-analytics.com/ur­chin.js“
type=„text/ja­vascript“&gt;&lt;/scrip­t&gt;<br />
&lt;script type=„text/ja­vascript“&gt;<br />
_udn = „www.sw.cz“;<br />
_uacct = „UA-xxxxxx-xx“;<br />
urchinTracker();<br />
&lt;/script&gt;</div>
]]></content:encoded>
			<wfw:commentRss>http://blog.red-pill.cz/2007/08/03/google-analytics-a-dvoupismenna-domena/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Označování externích odkazů</title>
		<link>http://blog.red-pill.cz/2006/06/11/oznacovani-externich-odkazu/</link>
		<comments>http://blog.red-pill.cz/2006/06/11/oznacovani-externich-odkazu/#comments</comments>
		<pubDate>Sun, 11 Jun 2006 11:28:57 +0000</pubDate>
		<dc:creator>tomas.fejfar</dc:creator>
				<category><![CDATA[JavaScript]]></category>
		<category><![CDATA[Přístupnost]]></category>

		<guid isPermaLink="false">http://blog.red-pill.cz/2006/06/11/oznacovani-externich-odkazu/</guid>
		<description><![CDATA[
<!-- by Texy2! -->]]></description>
			<content:encoded><![CDATA[
<p>Pro přístupnost a vlasně i přehlednost odkazů je vhodné mít ty
externí odlišené od těch interních. Do chvíle, než IE bude plně
podporovat CSS je jedinou šancí JavaScript.</p>

<p><strong>Teorie: </strong></p>

<p>Postupně projdeme všechny tagy <em>A</em> na stránce a zjistíme, které
z nich mají atribut <em>href </em>nastaveny na naší doménu. Ty potom
označíme příslušným CSS stylem.</p>
<strong>Praxe:</strong>
<ul>
	<li>JS kód:</li>
</ul>

<pre class="js"><code><span class="js-keywords1">function</span><span
class="js-out"> highlightExternalLinks(){
   </span><span
class="js-keywords1">var</span><span class="js-out"> links = </span><span
class="js-keywords2">document</span><span class="js-out">.</span><span
class="js-keywords2">getElementsByTagName</span><span
class="js-out">(</span><span class="js-quote">'a'</span><span
class="js-out">);
   </span><span class="js-keywords1">for</span><span
class="js-out"> (</span><span class="js-keywords1">var</span><span
class="js-out"> i=</span><span class="js-num">0</span><span
class="js-out">; i&lt;links.length; i++) {
      </span><span
class="js-keywords1">var</span><span
class="js-out"> link = links[i];
      </span><span
class="js-keywords1">var</span><span
class="js-out"> reg = /^http:[\/]{</span><span class="js-num">2</span><span
class="js-out">}tomasfejfar.wz.cz.*$/;
      </span><span
class="js-keywords1">if</span><span
class="js-out"> ((reg.test(link.href)!=</span><span
class="js-keywords1">true</span><span
class="js-out">)&amp;&amp;(link.href!=</span><span
class="js-quote">'#'</span><span
class="js-out">)&amp;&amp;(link.href!=</span><span
class="js-quote">''</span><span class="js-out">)) {
         </span><span
class="js-keywords1">var</span><span class="js-out"> obrazky = link.</span><span
class="js-keywords2">getElementsByTagName</span><span
class="js-out">(</span><span class="js-quote">'img'</span><span
class="js-out">)
         </span><span class="js-keywords1">if</span><span
class="js-out">(!obrazky[</span><span class="js-num">0</span><span
class="js-out">]){
            link.className = </span><span
class="js-quote">'external'</span><span
class="js-out">;
         }
      }
   }
}</span></code></pre>

<ul>
	<li>CSS screen styl:</li>
</ul>

<pre class="css"><code>a<span class="css-class">.external</span>{
   <span
class="css-property">padding-right</span>:<span
class="css-value">12px</span>;
   <span
class="css-property">background</span>:<span
class="css-value"> top right url(images/external.gif) no-repeat</span>;
}</code></pre>

<ul>
	<li>CSS print styl:</li>
</ul>

<pre class="css"><code><span
class="css-comment">/* pouze pro Gecko-based = nejde v IE */</span>
a<span
class="css-class">.external:after</span>{
   <span
class="css-property">content</span>:<span
class="css-value"> &quot; (&quot; attr(href) &quot;) &quot;</span>;
}</code></pre>

<!-- by Texy2! -->]]></content:encoded>
			<wfw:commentRss>http://blog.red-pill.cz/2006/06/11/oznacovani-externich-odkazu/feed/</wfw:commentRss>
		<slash:comments>4</slash:comments>
		</item>
		<item>
		<title>Dynamické nahrávání skriptu</title>
		<link>http://blog.red-pill.cz/2006/06/10/dynamicke-nahravani-skriptu/</link>
		<comments>http://blog.red-pill.cz/2006/06/10/dynamicke-nahravani-skriptu/#comments</comments>
		<pubDate>Sat, 10 Jun 2006 21:14:37 +0000</pubDate>
		<dc:creator>petr.kratina</dc:creator>
				<category><![CDATA[JavaScript]]></category>

		<guid isPermaLink="false">http://blog.red-pill.cz/2006/06/10/dynamicke-nahravani-skriptu/</guid>
		<description><![CDATA[
<!-- by Texy2! -->]]></description>
			<content:encoded><![CDATA[
<p>Pokud píšete opravdu velkou aplikaci, není vždy ideální vytvářet
jediný obrovský JS soubor a nutit klienta, aby ho celý stahoval a vykonával.
Nebo chceme skript generovat (např. pomocí php), ale nechceme kvůli jeho
obnovení znovu nahrávat celou stránku. Můžeme to vyřešit opět
JavaScriptem.</p>

<p><strong>Teorie:</strong> Jakmile do stránky vložíme skript, vykoná se.
Ale pokud je již stránka načtená, pouhé přidání tagu script do jejího
těla nám nepomůže. Aby se skript vykonal, je třeba jej umístit ho
<em>hlavičky</em> (head). Dále potřebujeme kontrolovat zda li již nebyl
skript jednou nahrán, popřípadě starý smazat a nahrát znovu. To si
zajistíme pomocí námi nastaveného <em>ID</em>, které vytvoříme tak aby
byla co nejmenší šance že by se opětovně v dokumentu vyskytlo. Poslední
věcí kterou by jsme mohli potřebovat je opět se zbavit již nepotřebného
skriptu. Není to příliš častý případ, ale uvedu ho zde i tak –
pokusíme se najít skript v hlavičce (pomocí <em>ID</em>) a
odstraníme ho.</p>

<p><strong>Praxe:</strong></p>

<pre class="js"><code><span class="js-keywords1">function</span><span
class="js-out"> injectScript(script, reload)
{
   </span><span
class="js-keywords1">var</span><span class="js-out"> head = </span><span
class="js-keywords2">document</span><span class="js-out">.</span><span
class="js-keywords2">getElementsByTagName</span><span
class="js-out">(</span><span class="js-quote">'head'</span><span
class="js-out">)[</span><span class="js-num">0</span><span
class="js-out">];
   </span><span
class="js-comment">// pokud hlavička neexistuje, ukončíme funkci a vrátíme false
</span><span
class="js-out">   </span><span class="js-keywords1">if</span><span
class="js-out"> (!head) { </span><span class="js-keywords1">return</span><span
class="js-out"> </span><span class="js-keywords1">false</span><span
class="js-out">; }

   </span><span class="js-keywords1">var</span><span
class="js-out"> old = </span><span class="js-keywords2">document</span><span
class="js-out">.</span><span class="js-keywords2">getElementById</span><span
class="js-out">(</span><span class="js-quote">'autoloadedscript-'</span><span
class="js-out">+script);
   </span><span
class="js-comment">// ověříme zda-li u  jsme skript nenahráli
</span><span
class="js-out">   </span><span class="js-keywords1">if</span><span
class="js-out"> (old) {
      </span><span
class="js-comment">// pokud ano a nechceme ho přepsat, funkci ukončíme
</span><span
class="js-out">      </span><span class="js-keywords1">if</span><span
class="js-out"> (!reload) { </span><span class="js-keywords1">return</span><span
class="js-out"> </span><span class="js-keywords1">true</span><span
class="js-out">; }
      </span><span
class="js-comment">// starý skript odstraníme
</span><span
class="js-out">      head.removeChild(old);
   }

   </span><span
class="js-comment">// Vytvoříme objekt s novým scriptem
</span><span
class="js-out">   </span><span class="js-keywords1">var</span><span
class="js-out"> newscr = </span><span class="js-keywords2">document</span><span
class="js-out">.createElement(</span><span class="js-quote">'script'</span><span
class="js-out">);
   newscr.id = </span><span
class="js-quote">'autoloadedscript-'</span><span
class="js-out">+script;
   newscr.src = script;
   newscr.type = </span><span
class="js-quote">'text/javascript'</span><span
class="js-out">;
   newscr.language = </span><span
class="js-quote">'JavaScript'</span><span class="js-out">;

   </span><span
class="js-comment">// a nakonec ho přidáme do hlavičky a tramtadadá! je hotovo
</span><span
class="js-out">   head.appendChild(newscr);
   </span><span
class="js-keywords1">return</span><span class="js-out"> </span><span
class="js-keywords1">true</span><span class="js-out">;
}

</span><span
class="js-keywords1">function</span><span
class="js-out"> rejectScript(script)
{
   </span><span
class="js-keywords1">var</span><span class="js-out"> head = </span><span
class="js-keywords2">document</span><span class="js-out">.</span><span
class="js-keywords2">getElementsByTagName</span><span
class="js-out">(</span><span class="js-quote">'head'</span><span
class="js-out">)[</span><span class="js-num">0</span><span
class="js-out">];
   </span><span
class="js-comment">// pokud hlavička neexistuje, ukončíme funkci a vrátíme false
</span><span
class="js-out">   </span><span class="js-keywords1">if</span><span
class="js-out"> (!head) { </span><span class="js-keywords1">return</span><span
class="js-out"> </span><span class="js-keywords1">false</span><span
class="js-out">; }

   </span><span class="js-keywords1">var</span><span
class="js-out"> old = </span><span class="js-keywords2">document</span><span
class="js-out">.</span><span class="js-keywords2">getElementById</span><span
class="js-out">(</span><span class="js-quote">'autoloadedscript-'</span><span
class="js-out">+script);
   </span><span
class="js-comment">// ověříme zda-li u  jsme skript nenahráli
</span><span
class="js-out">   </span><span class="js-keywords1">if</span><span
class="js-out"> (old) {
      </span><span
class="js-comment">// starý skript odstraníme
</span><span
class="js-out">      head.removeChild(old);
      </span><span
class="js-keywords1">return</span><span class="js-out"> </span><span
class="js-keywords1">true</span><span class="js-out">;
   }
   </span><span
class="js-keywords1">return</span><span class="js-out"> </span><span
class="js-keywords1">false</span><span class="js-out">;
}</span></code></pre>

<p><strong>Použití:</strong> Postupné injectování skriptů je využitelné
zvláště u velkých aplikací, kde nechcete aby klient měl u sebe
zbytečně velký skript. Funkci <em>injectScript()</em> zavoláme vždy před
voláním funkcí z požadovaného souboru, sama už se postará
o vynechání/zno­vunačtení skriptu.</p>

<p>A tady je malá ukázka: <a id="p9"
href="http://red-pill.darkyork.com/wp-content/uploads/2006/06/ukazka.zip">Download…</a></p>

<p>Petr</p>

<!-- by Texy2! -->]]></content:encoded>
			<wfw:commentRss>http://blog.red-pill.cz/2006/06/10/dynamicke-nahravani-skriptu/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>
