<?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>LoSoft Blog &#187; JS/AJAX</title>
	<atom:link href="http://www.losoft.org/blog/category/coding/js_ajax/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.losoft.org/blog</link>
	<description>Linux, Mac OS, programowanie ...</description>
	<lastBuildDate>Fri, 03 Dec 2010 20:29:30 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.1.3</generator>
		<item>
		<title>JS Call Later</title>
		<link>http://www.losoft.org/blog/2010/03/js-call-later/</link>
		<comments>http://www.losoft.org/blog/2010/03/js-call-later/#comments</comments>
		<pubDate>Fri, 19 Mar 2010 19:49:03 +0000</pubDate>
		<dc:creator>lookout</dc:creator>
				<category><![CDATA[JS/AJAX]]></category>
		<category><![CDATA[Web]]></category>
		<category><![CDATA[JS]]></category>

		<guid isPermaLink="false">http://www.losoft.org/blog/?p=2186</guid>
		<description><![CDATA[Taki prosty skrypcik, umozliwiajacy wywolanie metody JavaScript z czasowym opoznieniem. Przydatne gdy chcemy na przyklad wyswietlic plywajacego diva 5 sekund po zaladowaniu strony, albo ukryc elementy widoku po 5 sekundach Utworzmy klase obiektu dbajacego o wywolanie okreslonej metody po zadanym czasie a nastepnie sie zniszczy loCallTimer = function&#40;id, func, args, time&#41; &#123; if &#40;typeof&#40;id&#41; == [...]]]></description>
			<content:encoded><![CDATA[<p>Taki prosty skrypcik, umozliwiajacy wywolanie metody JavaScript z czasowym opoznieniem. Przydatne gdy chcemy na przyklad wyswietlic plywajacego diva 5 sekund po zaladowaniu strony, albo ukryc elementy widoku po 5 sekundach  <img src='http://www.losoft.org/blog/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </p>
<p>Utworzmy klase obiektu dbajacego o wywolanie okreslonej metody po zadanym czasie a nastepnie sie zniszczy</p>

<div class="wp_syntax"><div class="code"><pre class="javascript" style="font-family:monospace;">loCallTimer <span style="color: #339933;">=</span> <span style="color: #003366; font-weight: bold;">function</span><span style="color: #009900;">&#40;</span>id<span style="color: #339933;">,</span> func<span style="color: #339933;">,</span> args<span style="color: #339933;">,</span> time<span style="color: #009900;">&#41;</span>
<span style="color: #009900;">&#123;</span>
	<span style="color: #000066; font-weight: bold;">if</span> <span style="color: #009900;">&#40;</span><span style="color: #000066; font-weight: bold;">typeof</span><span style="color: #009900;">&#40;</span>id<span style="color: #009900;">&#41;</span> <span style="color: #339933;">==</span> <span style="color: #3366CC;">&quot;undefined&quot;</span><span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
		<span style="color: #000066; font-weight: bold;">return</span><span style="color: #339933;">;</span>
	<span style="color: #009900;">&#125;</span>
	<span style="color: #000066; font-weight: bold;">this</span>.<span style="color: #660066;">id</span> <span style="color: #339933;">=</span> id<span style="color: #339933;">;</span>
	<span style="color: #000066; font-weight: bold;">this</span>.<span style="color: #660066;">func</span> <span style="color: #339933;">=</span> func <span style="color: #339933;">||</span> <span style="color: #003366; font-weight: bold;">null</span><span style="color: #339933;">;</span>
	<span style="color: #000066; font-weight: bold;">this</span>.<span style="color: #660066;">args</span> <span style="color: #339933;">=</span> args <span style="color: #339933;">||</span> <span style="color: #003366; font-weight: bold;">null</span><span style="color: #339933;">;</span>
	<span style="color: #000066; font-weight: bold;">this</span>.<span style="color: #660066;">time</span> <span style="color: #339933;">=</span> time <span style="color: #339933;">||</span> <span style="color: #CC0000;">1500</span><span style="color: #339933;">;</span>
	<span style="color: #000066; font-weight: bold;">this</span>.<span style="color: #660066;">timer</span> <span style="color: #339933;">=</span> <span style="color: #003366; font-weight: bold;">null</span><span style="color: #339933;">;</span>
<span style="color: #009900;">&#125;</span><span style="color: #339933;">;</span>
&nbsp;
loCallTimer.<span style="color: #660066;">prototype</span>.<span style="color: #660066;">suicide</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: #000066; font-weight: bold;">this</span>.<span style="color: #660066;">stopTimer</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
	<span style="color: #000066; font-weight: bold;">eval</span><span style="color: #009900;">&#40;</span><span style="color: #3366CC;">&quot;window.ct_&quot;</span> <span style="color: #339933;">+</span> <span style="color: #000066; font-weight: bold;">this</span>.<span style="color: #660066;">id</span> <span style="color: #339933;">+</span> <span style="color: #3366CC;">&quot; = null;&quot;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
<span style="color: #009900;">&#125;</span><span style="color: #339933;">;</span>
&nbsp;
loCallTimer.<span style="color: #660066;">prototype</span>.<span style="color: #660066;">onTime</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: #000066; font-weight: bold;">if</span> <span style="color: #009900;">&#40;</span><span style="color: #000066; font-weight: bold;">typeof</span><span style="color: #009900;">&#40;</span><span style="color: #000066; font-weight: bold;">this</span>.<span style="color: #660066;">args</span><span style="color: #009900;">&#41;</span> <span style="color: #339933;">==</span> <span style="color: #3366CC;">&quot;undefined&quot;</span> <span style="color: #339933;">||</span> <span style="color: #000066; font-weight: bold;">this</span>.<span style="color: #660066;">args</span> <span style="color: #339933;">==</span> <span style="color: #003366; font-weight: bold;">null</span> <span style="color: #339933;">||</span> <span style="color: #000066; font-weight: bold;">this</span>.<span style="color: #660066;">args</span>.<span style="color: #660066;">length</span> <span style="color: #339933;">==</span> <span style="color: #CC0000;">0</span><span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
		<span style="color: #000066; font-weight: bold;">this</span>.<span style="color: #660066;">func</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
	<span style="color: #009900;">&#125;</span> <span style="color: #000066; font-weight: bold;">else</span> <span style="color: #009900;">&#123;</span>
		<span style="color: #000066; font-weight: bold;">this</span>.<span style="color: #660066;">func</span>.<span style="color: #660066;">apply</span><span style="color: #009900;">&#40;</span><span style="color: #000066; font-weight: bold;">this</span>.<span style="color: #660066;">func</span><span style="color: #339933;">,</span> <span style="color: #000066; font-weight: bold;">this</span>.<span style="color: #660066;">args</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
	<span style="color: #009900;">&#125;</span>
	<span style="color: #000066; font-weight: bold;">this</span>.<span style="color: #660066;">suicide</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
<span style="color: #009900;">&#125;</span><span style="color: #339933;">;</span>
&nbsp;
loCallTimer.<span style="color: #660066;">prototype</span>.<span style="color: #660066;">runTimer</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: #000066; font-weight: bold;">this</span>.<span style="color: #660066;">stopTimer</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
	<span style="color: #000066; font-weight: bold;">this</span>.<span style="color: #660066;">timer</span> <span style="color: #339933;">=</span> window.<span style="color: #660066;">setTimeout</span><span style="color: #009900;">&#40;</span><span style="color: #3366CC;">&quot;window.ct_&quot;</span> <span style="color: #339933;">+</span> <span style="color: #000066; font-weight: bold;">this</span>.<span style="color: #660066;">id</span> <span style="color: #339933;">+</span> <span style="color: #3366CC;">&quot;.onTime();&quot;</span><span style="color: #339933;">,</span> <span style="color: #000066; font-weight: bold;">this</span>.<span style="color: #660066;">time</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
<span style="color: #009900;">&#125;</span><span style="color: #339933;">;</span>
&nbsp;
loCallTimer.<span style="color: #660066;">prototype</span>.<span style="color: #660066;">stopTimer</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: #000066; font-weight: bold;">if</span> <span style="color: #009900;">&#40;</span><span style="color: #000066; font-weight: bold;">this</span>.<span style="color: #660066;">timer</span> <span style="color: #339933;">!=</span> <span style="color: #003366; font-weight: bold;">null</span><span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
		window.<span style="color: #660066;">clearTimeout</span><span style="color: #009900;">&#40;</span><span style="color: #000066; font-weight: bold;">this</span>.<span style="color: #660066;">timer</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
		<span style="color: #000066; font-weight: bold;">this</span>.<span style="color: #660066;">timer</span> <span style="color: #339933;">=</span> <span style="color: #003366; font-weight: bold;">null</span><span style="color: #339933;">;</span>
	<span style="color: #009900;">&#125;</span>
<span style="color: #009900;">&#125;</span><span style="color: #339933;">;</span></pre></div></div>

<p>Wyzwalacz</p>

<div class="wp_syntax"><div class="code"><pre class="javascript" style="font-family:monospace;"><span style="color: #003366; font-weight: bold;">function</span> callLater<span style="color: #009900;">&#40;</span>func<span style="color: #339933;">,</span> args<span style="color: #339933;">,</span> time<span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
    <span style="color: #003366; font-weight: bold;">var</span> id <span style="color: #339933;">=</span> <span style="color: #009900;">&#40;</span><span style="color: #003366; font-weight: bold;">new</span> Date<span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#41;</span>.<span style="color: #660066;">getTime</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
    <span style="color: #003366; font-weight: bold;">var</span> ct <span style="color: #339933;">=</span> <span style="color: #000066; font-weight: bold;">eval</span><span style="color: #009900;">&#40;</span><span style="color: #3366CC;">&quot;window.ct_&quot;</span> <span style="color: #339933;">+</span> id <span style="color: #339933;">+</span> <span style="color: #3366CC;">&quot; = new loCallTimer(&quot;</span> <span style="color: #339933;">+</span> id <span style="color: #339933;">+</span> <span style="color: #3366CC;">&quot;);&quot;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
    ct.<span style="color: #660066;">func</span> <span style="color: #339933;">=</span> func<span style="color: #339933;">;</span>
    ct.<span style="color: #660066;">args</span> <span style="color: #339933;">=</span> args<span style="color: #339933;">;</span>
    ct.<span style="color: #660066;">time</span> <span style="color: #339933;">=</span> time<span style="color: #339933;">;</span>
    ct.<span style="color: #660066;">runTimer</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
    <span style="color: #000066; font-weight: bold;">return</span> ct<span style="color: #339933;">;</span>
<span style="color: #009900;">&#125;</span><span style="color: #339933;">;</span></pre></div></div>

<p>Testujemy<br />
<span id="more-2186"></span></p>

<div class="wp_syntax"><div class="code"><pre class="javascript" style="font-family:monospace;"><span style="color: #003366; font-weight: bold;">function</span> oblicz<span style="color: #009900;">&#40;</span>msg<span style="color: #339933;">,</span> a<span style="color: #339933;">,</span> b<span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
	<span style="color: #000066;">alert</span><span style="color: #009900;">&#40;</span>msg <span style="color: #339933;">+</span> <span style="color: #009900;">&#40;</span>a <span style="color: #339933;">+</span> b<span style="color: #009900;">&#41;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
<span style="color: #009900;">&#125;</span><span style="color: #339933;">;</span>
&nbsp;
callLater<span style="color: #009900;">&#40;</span>oblicz<span style="color: #339933;">,</span> <span style="color: #009900;">&#91;</span><span style="color: #3366CC;">&quot;Sorki, troche to trwalo ;). Suma wynosi: &quot;</span><span style="color: #339933;">,</span> <span style="color: #CC0000;">3</span><span style="color: #339933;">,</span> <span style="color: #CC0000;">3</span><span style="color: #009900;">&#93;</span><span style="color: #339933;">,</span> <span style="color: #CC0000;">3000</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span></pre></div></div>

]]></content:encoded>
			<wfw:commentRss>http://www.losoft.org/blog/2010/03/js-call-later/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>JS dziedziczenie i override&#8217;y</title>
		<link>http://www.losoft.org/blog/2010/03/js-dziedziczenie-i-overridey/</link>
		<comments>http://www.losoft.org/blog/2010/03/js-dziedziczenie-i-overridey/#comments</comments>
		<pubDate>Sat, 06 Mar 2010 22:59:29 +0000</pubDate>
		<dc:creator>lookout</dc:creator>
				<category><![CDATA[JS/AJAX]]></category>
		<category><![CDATA[Web]]></category>
		<category><![CDATA[dziedziczenie]]></category>
		<category><![CDATA[JS]]></category>

		<guid isPermaLink="false">http://www.losoft.org/blog/?p=2132</guid>
		<description><![CDATA[Niby nie ma formalnie klas w JS, jednak mozemy stworzyc cos co mimo braku podzialu na obiekty prywatne, publiczne itd, bedzie wygladalo na klasy. Na poczatek stworzmy nasza &#8220;klase&#8221; bazowa // konstruktor klasy BaseClass = function&#40;name&#41; &#123; this.name = name &#124;&#124; &#34;obj_&#34; + &#40;new Date&#40;&#41;&#41;.getTime&#40;&#41;; &#125;; &#160; BaseClass.prototype.className = &#34;BaseClass&#34;; &#160; // instancja klasy BaseClass [...]]]></description>
			<content:encoded><![CDATA[<p>Niby nie ma formalnie klas w JS, jednak mozemy stworzyc cos co mimo braku podzialu na obiekty prywatne, publiczne itd, bedzie wygladalo na klasy. </p>
<p>Na poczatek stworzmy nasza &#8220;klase&#8221; bazowa</p>

<div class="wp_syntax"><div class="code"><pre class="javascript" style="font-family:monospace;"><span style="color: #006600; font-style: italic;">// konstruktor klasy</span>
BaseClass <span style="color: #339933;">=</span> <span style="color: #003366; font-weight: bold;">function</span><span style="color: #009900;">&#40;</span><span style="color: #000066;">name</span><span style="color: #009900;">&#41;</span>
<span style="color: #009900;">&#123;</span>
	<span style="color: #000066; font-weight: bold;">this</span>.<span style="color: #000066;">name</span> <span style="color: #339933;">=</span> <span style="color: #000066;">name</span> <span style="color: #339933;">||</span> <span style="color: #3366CC;">&quot;obj_&quot;</span> <span style="color: #339933;">+</span> <span style="color: #009900;">&#40;</span><span style="color: #003366; font-weight: bold;">new</span> Date<span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#41;</span>.<span style="color: #660066;">getTime</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
<span style="color: #009900;">&#125;</span><span style="color: #339933;">;</span>
&nbsp;
BaseClass.<span style="color: #660066;">prototype</span>.<span style="color: #660066;">className</span> <span style="color: #339933;">=</span> <span style="color: #3366CC;">&quot;BaseClass&quot;</span><span style="color: #339933;">;</span>
&nbsp;
<span style="color: #006600; font-style: italic;">// instancja klasy BaseClass</span>
<span style="color: #003366; font-weight: bold;">var</span> instanceOfBaseClass <span style="color: #339933;">=</span> <span style="color: #003366; font-weight: bold;">new</span> BaseClass<span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span></pre></div></div>

<p>w ten sposob mamy obiekt posiadajacy dwie wlasnosci <span class="notranslate code">name</span> i <span class="notranslate code">className</span>. Ta druga nie bedzie dziedziczona bezposrednio.</p>
<p>A teraz dziedziczenie.</p>

<div class="wp_syntax"><div class="code"><pre class="javascript" style="font-family:monospace;">DerivativeClass <span style="color: #339933;">=</span> <span style="color: #003366; font-weight: bold;">function</span><span style="color: #009900;">&#40;</span><span style="color: #000066;">name</span><span style="color: #009900;">&#41;</span>
<span style="color: #009900;">&#123;</span>
	<span style="color: #000066; font-weight: bold;">this</span>.<span style="color: #003366; font-weight: bold;">super</span> <span style="color: #339933;">=</span> BaseClass<span style="color: #339933;">;</span>
	<span style="color: #000066; font-weight: bold;">this</span>.<span style="color: #003366; font-weight: bold;">super</span><span style="color: #009900;">&#40;</span><span style="color: #000066;">name</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
<span style="color: #009900;">&#125;</span><span style="color: #339933;">;</span>
&nbsp;
DerivativeClass.<span style="color: #660066;">prototype</span> <span style="color: #339933;">=</span> <span style="color: #003366; font-weight: bold;">new</span> BaseClass<span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
DerivativeClass.<span style="color: #660066;">prototype</span>.<span style="color: #660066;">className</span> <span style="color: #339933;">=</span> <span style="color: #3366CC;">&quot;DerivativeClass&quot;</span><span style="color: #339933;">;</span>
&nbsp;
<span style="color: #003366; font-weight: bold;">var</span> instanceOfDerivativeClass <span style="color: #339933;">=</span> <span style="color: #003366; font-weight: bold;">new</span> DerivativeClass<span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span></pre></div></div>

<p>Po tym zabiegu instancja klasy <span class="notranslate code">DerivativeClass</span> bedzie wygladac mniej wiecej tak</p>

<div class="wp_syntax"><div class="code"><pre class="javascript" style="font-family:monospace;">instanceOfDerivativeClass
	className <span style="color: #339933;">=</span> <span style="color: #3366CC;">&quot;DerivativeClass&quot;</span>
	<span style="color: #000066;">name</span> <span style="color: #339933;">=</span> <span style="color: #3366CC;">&quot;obj_1267912571913&quot;</span>
		<span style="color: #003366; font-weight: bold;">super</span>
			prototype
				className <span style="color: #339933;">=</span> <span style="color: #3366CC;">&quot;BaseClass&quot;</span></pre></div></div>

<p>Dzidziczenie? Jak najbardziej <img src='http://www.losoft.org/blog/wp-includes/images/smilies/icon_wink.gif' alt=';)' class='wp-smiley' /> </p>
<p>Teraz sprobujmy nadpisac funkcje bazowa <span class="notranslate code">init</span>, na poczatek dodajmy ja<br />
<span id="more-2132"></span></p>

<div class="wp_syntax"><div class="code"><pre class="javascript" style="font-family:monospace;">BaseClass.<span style="color: #660066;">prototype</span>.<span style="color: #660066;">init</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: #000066; font-weight: bold;">this</span>.<span style="color: #660066;">initialized</span> <span style="color: #339933;">=</span> <span style="color: #003366; font-weight: bold;">true</span><span style="color: #339933;">;</span>
<span style="color: #009900;">&#125;</span><span style="color: #339933;">;</span></pre></div></div>

<p>i do konstruktora</p>

<div class="wp_syntax"><div class="code"><pre class="javascript" style="font-family:monospace;"><span style="color: #000066; font-weight: bold;">this</span>.<span style="color: #660066;">initialized</span> <span style="color: #339933;">=</span> <span style="color: #003366; font-weight: bold;">false</span><span style="color: #339933;">;</span></pre></div></div>

<p>tak docelowo powinna wygladac klasa bazowa</p>

<div class="wp_syntax"><div class="code"><pre class="javascript" style="font-family:monospace;">BaseClass <span style="color: #339933;">=</span> <span style="color: #003366; font-weight: bold;">function</span><span style="color: #009900;">&#40;</span><span style="color: #000066;">name</span><span style="color: #009900;">&#41;</span>
<span style="color: #009900;">&#123;</span>
	<span style="color: #000066; font-weight: bold;">this</span>.<span style="color: #000066;">name</span> <span style="color: #339933;">=</span> <span style="color: #000066;">name</span> <span style="color: #339933;">||</span> <span style="color: #3366CC;">&quot;obj_&quot;</span> <span style="color: #339933;">+</span> <span style="color: #009900;">&#40;</span><span style="color: #003366; font-weight: bold;">new</span> Date<span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#41;</span>.<span style="color: #660066;">getTime</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
	<span style="color: #000066; font-weight: bold;">this</span>.<span style="color: #660066;">initialized</span> <span style="color: #339933;">=</span> <span style="color: #003366; font-weight: bold;">false</span><span style="color: #339933;">;</span>
<span style="color: #009900;">&#125;</span><span style="color: #339933;">;</span>
&nbsp;
BaseClass.<span style="color: #660066;">prototype</span>.<span style="color: #660066;">className</span> <span style="color: #339933;">=</span> <span style="color: #3366CC;">&quot;BaseClass&quot;</span><span style="color: #339933;">;</span>
&nbsp;
BaseClass.<span style="color: #660066;">prototype</span>.<span style="color: #660066;">init</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: #000066; font-weight: bold;">this</span>.<span style="color: #660066;">initialized</span> <span style="color: #339933;">=</span> <span style="color: #003366; font-weight: bold;">true</span><span style="color: #339933;">;</span>
<span style="color: #009900;">&#125;</span><span style="color: #339933;">;</span></pre></div></div>

<p>Teraz w obiekcie <span class="notranslate code">DerivativeClass</span> nadpiszemy ja w nastepujacy sposob</p>

<div class="wp_syntax"><div class="code"><pre class="javascript" style="font-family:monospace;">DerivativeClass.<span style="color: #660066;">prototype</span>.<span style="color: #660066;">superInit</span> <span style="color: #339933;">=</span> DerivativeClass.<span style="color: #660066;">prototype</span>.<span style="color: #660066;">init</span><span style="color: #339933;">;</span>
DerivativeClass.<span style="color: #660066;">prototype</span>.<span style="color: #660066;">init</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: #006600; font-style: italic;">// do something</span>
	<span style="color: #006600; font-style: italic;">// a na koncu wywolaj</span>
	<span style="color: #000066; font-weight: bold;">this</span>.<span style="color: #660066;">superInit</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
<span style="color: #009900;">&#125;</span><span style="color: #339933;">;</span></pre></div></div>

<p>Dziala? Jasne, ze tak:</p>
]]></content:encoded>
			<wfw:commentRss>http://www.losoft.org/blog/2010/03/js-dziedziczenie-i-overridey/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Przerejestrowanie obiektow JS po zaladowaniu kontentu AJAX&#8217;em</title>
		<link>http://www.losoft.org/blog/2010/02/przerejestrowanie-obiektow-js-po-zaladowaniu-kontentu-ajaxem/</link>
		<comments>http://www.losoft.org/blog/2010/02/przerejestrowanie-obiektow-js-po-zaladowaniu-kontentu-ajaxem/#comments</comments>
		<pubDate>Sun, 28 Feb 2010 16:46:52 +0000</pubDate>
		<dc:creator>lookout</dc:creator>
				<category><![CDATA[JS/AJAX]]></category>
		<category><![CDATA[Web]]></category>
		<category><![CDATA[AJAX]]></category>
		<category><![CDATA[DHTML]]></category>
		<category><![CDATA[JS]]></category>
		<category><![CDATA[XHTML]]></category>

		<guid isPermaLink="false">http://www.losoft.org/blog/?p=2096</guid>
		<description><![CDATA[Niewielka sprawa, jednak zabrala mi troche czasu. Ten przypadek wymagal dociagania skryptow JS w zaleznosci od zaladowanego kontentu (On Demand JS) lecz dostarczane obiekty mialy nazywac sie identycznie. Wazne bylo, aby metoda getAnswer obiektu Question zwracala odpowiednio sformatowane dane, w zaleznosci od wyswietlonego kontentu. Silnik ladowany byl po wejsciu na strone wraz z zawartoscia zawierajaca [...]]]></description>
			<content:encoded><![CDATA[<p>Niewielka sprawa, jednak zabrala mi troche czasu. Ten przypadek wymagal dociagania skryptow JS w zaleznosci od zaladowanego kontentu (On Demand JS) lecz dostarczane obiekty mialy nazywac sie identycznie. Wazne bylo, aby metoda <span class="notranslate code">getAnswer</span> obiektu <span class="notranslate code">Question</span> zwracala odpowiednio sformatowane dane, w zaleznosci od wyswietlonego kontentu. Silnik ladowany byl po wejsciu na strone wraz z zawartoscia zawierajaca obiekty JS, logiczne wiec, ze parser je wczytal i zarejestrowal. Wymienny kontent zawieral override&#8217;y zaladowanych obiektow, ktore niestety nie rejestrowaly sie automatycznie.</p>
<p>Mamy wiec cos podobnego</p>

<div class="wp_syntax"><div class="code"><pre class="javascript" style="font-family:monospace;">Question <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: #000066; font-weight: bold;">this</span>.<span style="color: #660066;">answer</span> <span style="color: #339933;">=</span> <span style="color: #003366; font-weight: bold;">null</span><span style="color: #339933;">;</span>
	<span style="color: #009900;">&#123;</span> body <span style="color: #009900;">&#125;</span>
<span style="color: #009900;">&#125;</span><span style="color: #339933;">;</span>
&nbsp;
Question.<span style="color: #660066;">prototype</span>.<span style="color: #660066;">getAnswer</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: #000066; font-weight: bold;">if</span> <span style="color: #009900;">&#40;</span><span style="color: #000066; font-weight: bold;">this</span>.<span style="color: #660066;">answer</span> <span style="color: #339933;">!=</span> <span style="color: #003366; font-weight: bold;">null</span><span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
		<span style="color: #000066; font-weight: bold;">return</span> <span style="color: #000066; font-weight: bold;">this</span>.<span style="color: #660066;">answer</span><span style="color: #339933;">;</span>
	<span style="color: #009900;">&#125;</span> <span style="color: #000066; font-weight: bold;">else</span> <span style="color: #009900;">&#123;</span>
		<span style="color: #009900;">&#123;</span> body <span style="color: #009900;">&#125;</span>
	<span style="color: #009900;">&#125;</span>
<span style="color: #009900;">&#125;</span><span style="color: #339933;">;</span></pre></div></div>

<p>w kazdej dynamicznie dostarczanej zawartosci z ta roznica, ze <span class="notranslate code">{ body }</span> roznie formatowalo dane</p>
<p>Aby dzialalo to poprawnie, nalezy po wczytaniu kontentu AJAX&#8217;em zarejestrowac wczytane obiekty, a mozna to zrobic tak</p>

<div class="wp_syntax"><div class="code"><pre class="javascript" style="font-family:monospace;"><span style="color: #003366; font-weight: bold;">function</span> reloadScripts<span style="color: #009900;">&#40;</span>id<span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
	<span style="color: #006600; font-style: italic;">// pobieramy obiekt zawierajacy override'y</span>
	<span style="color: #003366; font-weight: bold;">var</span> obj <span style="color: #339933;">=</span> document.<span style="color: #660066;">getElementById</span><span style="color: #009900;">&#40;</span>id<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>obj<span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
		<span style="color: #006600; font-style: italic;">// wyciagamy tagi potencjalnie zawierajace skrypty JS</span>
		<span style="color: #003366; font-weight: bold;">var</span> scripts <span style="color: #339933;">=</span> obj.<span style="color: #660066;">getElementsByTagName</span><span style="color: #009900;">&#40;</span><span style="color: #3366CC;">&quot;script&quot;</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><span style="color: #003366; font-weight: bold;">var</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> scripts.<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>
			script <span style="color: #339933;">=</span> scripts<span style="color: #009900;">&#91;</span>i<span style="color: #009900;">&#93;</span>.<span style="color: #660066;">innerHTML</span><span style="color: #339933;">;</span>
			<span style="color: #006600; font-style: italic;">// rejestrujemy JS'y</span>
			<span style="color: #000066; font-weight: bold;">eval</span><span style="color: #009900;">&#40;</span>script<span style="color: #009900;">&#41;</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: #339933;">;</span></pre></div></div>

<p>lub tak, jezeli dostarczamy jedynie JS&#8217;y</p>

<div class="wp_syntax"><div class="code"><pre class="javascript" style="font-family:monospace;"><span style="color: #000066; font-weight: bold;">eval</span><span style="color: #009900;">&#40;</span>ajax.<span style="color: #660066;">xmlHttp</span>.<span style="color: #660066;">responseText</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span></pre></div></div>

<p>Jak masz inny pomysl na rozwiazanie tego problemu &#8230; nie krepuj sie, daj komentsa <img src='http://www.losoft.org/blog/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </p>
]]></content:encoded>
			<wfw:commentRss>http://www.losoft.org/blog/2010/02/przerejestrowanie-obiektow-js-po-zaladowaniu-kontentu-ajaxem/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Raportowanie bledow strony klienta</title>
		<link>http://www.losoft.org/blog/2009/11/raportowanie-bledow-strony-klienta/</link>
		<comments>http://www.losoft.org/blog/2009/11/raportowanie-bledow-strony-klienta/#comments</comments>
		<pubDate>Sun, 08 Nov 2009 18:24:45 +0000</pubDate>
		<dc:creator>lookout</dc:creator>
				<category><![CDATA[JS/AJAX]]></category>
		<category><![CDATA[PHP]]></category>
		<category><![CDATA[Web]]></category>
		<category><![CDATA[AJAX]]></category>
		<category><![CDATA[JS]]></category>
		<category><![CDATA[programowanie]]></category>

		<guid isPermaLink="false">http://www.losoft.org/blog/?p=1585</guid>
		<description><![CDATA[Back-end aplikacji webowej, mozna kontrolowac przegladajac raporty i logi, lecz nijak ma sie to do front-endu wyswietlanego po stronie klienta. Nie dowiemy sie czy i kiedy wystapi blad, dopoki jakis nawiedzony klient nie zwymysla nam do sluchawki, chyba, ze mamy 105 srodowisk testowych, na ktorych mozemy sprawdzic kazda funkcjonalnosc aplikacji. I tutaj nasuwa sie pytanie, [...]]]></description>
			<content:encoded><![CDATA[<p>Back-end aplikacji webowej, mozna kontrolowac przegladajac raporty i logi, lecz nijak ma sie to do front-endu wyswietlanego po stronie klienta. Nie dowiemy sie czy i kiedy wystapi blad, dopoki jakis nawiedzony klient nie zwymysla nam do sluchawki, chyba, ze mamy 105 srodowisk testowych, na ktorych mozemy sprawdzic kazda funkcjonalnosc aplikacji.</p>
<p>I tutaj nasuwa sie pytanie, czy nie ma innej mozliwosci?<br />
Sa, a to jedna z nich, dzieki asynchronicznym zapytaniom, raport o bledzie klienta trafi do back-endu, i zapisany zostanie, do bazki czy pliku logow.</p>
<h3>Przechwytywanie bledow</h3>
<p>1. Dodajemy wymagane pliki bibliotek</p>

<div class="wp_syntax"><div class="code"><pre class="xml" style="font-family:monospace;"><span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;script</span> <span style="color: #000066;">type</span>=<span style="color: #ff0000;">&quot;text/javascript&quot;</span> <span style="color: #000066;">src</span>=<span style="color: #ff0000;">&quot;http://www.losoft.org/blog/download/ajax/loajax_v1.1.js&quot;</span><span style="color: #000000; font-weight: bold;">&gt;</span><span style="color: #000000; font-weight: bold;">&lt;/script<span style="color: #000000; font-weight: bold;">&gt;</span></span></span></pre></div></div>

<p>plik mozna pobrac z dzialu <a href="http://www.losoft.org/blog/download-page/" title="Download page" target="_blank">Download</a>, albo zamiast klasy loAJAX, linkujemy wlasnego wrappera ajax.</p>
<p>2. Tworzymy metode akcyjna zdarzenia <span class="notranslate code">window.onerror</span></p>

<div class="wp_syntax"><div class="code"><pre class="javascript" style="font-family:monospace;"><span style="color: #006600; font-style: italic;">// on/off powiadomienie klienta o bledzie</span>
<span style="color: #003366; font-weight: bold;">var</span> suppressErrors <span style="color: #339933;">=</span> <span style="color: #003366; font-weight: bold;">true</span><span style="color: #339933;">;</span>
<span style="color: #006600; font-style: italic;">// nowy obiekt ajax</span>
<span style="color: #003366; font-weight: bold;">var</span> ajax <span style="color: #339933;">=</span> <span style="color: #003366; font-weight: bold;">new</span> loAJAX<span style="color: #009900;">&#40;</span><span style="color: #000066; font-weight: bold;">this</span><span style="color: #339933;">,</span> <span style="color: #3366CC;">&quot;http://www.losoft.org/blog/examples/ajax/errorreport.php&quot;</span><span style="color: #339933;">,</span> <span style="color: #003366; font-weight: bold;">null</span><span style="color: #339933;">,</span> AJAX_POST<span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
<span style="color: #006600; font-style: italic;">// akcja zdarzenia onerror</span>
<span style="color: #003366; font-weight: bold;">function</span> errorReport<span style="color: #009900;">&#40;</span>msg<span style="color: #339933;">,</span> url<span style="color: #339933;">,</span> lineNumber<span style="color: #009900;">&#41;</span>
<span style="color: #009900;">&#123;</span>
	ajax.<span style="color: #660066;">reset</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
	ajax.<span style="color: #660066;">addParam</span><span style="color: #009900;">&#40;</span><span style="color: #3366CC;">&quot;msg&quot;</span><span style="color: #339933;">,</span> msg<span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
	ajax.<span style="color: #660066;">addParam</span><span style="color: #009900;">&#40;</span><span style="color: #3366CC;">&quot;url&quot;</span><span style="color: #339933;">,</span> url<span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
	ajax.<span style="color: #660066;">addParam</span><span style="color: #009900;">&#40;</span><span style="color: #3366CC;">&quot;lineNumber&quot;</span><span style="color: #339933;">,</span> lineNumber<span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
	ajax.<span style="color: #660066;">request</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
&nbsp;
	<span style="color: #000066; font-weight: bold;">if</span> <span style="color: #009900;">&#40;</span>suppressErrors<span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
		<span style="color: #000066; font-weight: bold;">return</span> <span style="color: #003366; font-weight: bold;">true</span><span style="color: #339933;">;</span>
	<span style="color: #009900;">&#125;</span>
	<span style="color: #000066;">alert</span><span style="color: #009900;">&#40;</span><span style="color: #3366CC;">&quot;Error occurred: &quot;</span> <span style="color: #339933;">+</span> msg <span style="color: #339933;">+</span> <span style="color: #3366CC;">&quot;<span style="color: #000099; font-weight: bold;">\n</span>URL: &quot;</span> <span style="color: #339933;">+</span> url <span style="color: #339933;">+</span> <span style="color: #3366CC;">&quot;<span style="color: #000099; font-weight: bold;">\n</span>Line Number: &quot;</span> <span style="color: #339933;">+</span> lineNumber<span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
<span style="color: #009900;">&#125;</span><span style="color: #339933;">;</span></pre></div></div>

<p>3. Podpiecie akcji</p>

<div class="wp_syntax"><div class="code"><pre class="javascript" style="font-family:monospace;">window.<span style="color: #000066;">onerror</span> <span style="color: #339933;">=</span> errorReport<span style="color: #339933;">;</span></pre></div></div>

<p>Jak mamy juz gotowa metode, to teraz &#8230; <span id="more-1585"></span>zajmijmy sie odebraniem raportu po stronie serwera</p>
<p>4. Skrypt naslychujacy w PHP</p>

<div class="wp_syntax"><div class="code"><pre class="php" style="font-family:monospace;"><span style="color: #000000; font-weight: bold;">&lt;?php</span>
<span style="color: #000088;">$msg</span> <span style="color: #339933;">=</span> <span style="color: #000088;">$_REQUEST</span><span style="color: #009900;">&#91;</span><span style="color: #0000ff;">&quot;msg&quot;</span><span style="color: #009900;">&#93;</span><span style="color: #339933;">;</span>
<span style="color: #000088;">$url</span> <span style="color: #339933;">=</span> <span style="color: #000088;">$_REQUEST</span><span style="color: #009900;">&#91;</span><span style="color: #0000ff;">&quot;url&quot;</span><span style="color: #009900;">&#93;</span><span style="color: #339933;">;</span>
<span style="color: #000088;">$lineNumber</span> <span style="color: #339933;">=</span> <span style="color: #000088;">$_REQUEST</span><span style="color: #009900;">&#91;</span><span style="color: #0000ff;">&quot;lineNumber&quot;</span><span style="color: #009900;">&#93;</span><span style="color: #339933;">;</span>
<span style="color: #666666; font-style: italic;">// tutaj zapis do pliku, bazki, lub ...</span>
<span style="color: #666666; font-style: italic;">// naprzyklad wysylamy sformatowana wiadomosc do klienta</span>
<span style="color: #b1b100;">echo</span> <span style="color: #0000ff;">&quot;AJAX Response.<span style="color: #000099; font-weight: bold;">\n</span>Error occurred: &quot;</span><span style="color: #339933;">.</span><span style="color: #000088;">$msg</span><span style="color: #339933;">.</span><span style="color: #0000ff;">&quot;<span style="color: #000099; font-weight: bold;">\n</span>URL: &quot;</span><span style="color: #339933;">.</span><span style="color: #000088;">$url</span><span style="color: #339933;">.</span><span style="color: #0000ff;">&quot;<span style="color: #000099; font-weight: bold;">\n</span>Line Number: &quot;</span><span style="color: #339933;">.</span><span style="color: #000088;">$lineNumber</span><span style="color: #339933;">;</span>
<span style="color: #000000; font-weight: bold;">?&gt;</span></pre></div></div>

<p>Aby wyswietlic wynik dzialania, mozemy podpiac listenera przed wywolaniem metody <span class="notranslate code">ajax.request();</span> w ten sposob</p>

<div class="wp_syntax"><div class="code"><pre class="javascript" style="font-family:monospace;">ajax.<span style="color: #660066;">setListener</span><span style="color: #009900;">&#40;</span>ajaxListener<span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span></pre></div></div>

<p>tego wlasnie nasluchiwacza</p>

<div class="wp_syntax"><div class="code"><pre class="javascript" style="font-family:monospace;"><span style="color: #006600; font-style: italic;">// funkcja listenera</span>
<span style="color: #003366; font-weight: bold;">function</span> ajaxListener<span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span>
<span style="color: #009900;">&#123;</span>
	<span style="color: #000066; font-weight: bold;">if</span> <span style="color: #009900;">&#40;</span>ajax.<span style="color: #660066;">xmlHttp</span>.<span style="color: #660066;">readyState</span> <span style="color: #339933;">==</span> <span style="color: #CC0000;">4</span><span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
		<span style="color: #000066;">alert</span><span style="color: #009900;">&#40;</span>ajax.<span style="color: #660066;">xmlHttp</span>.<span style="color: #660066;">responseText</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
	<span style="color: #009900;">&#125;</span>
<span style="color: #009900;">&#125;</span><span style="color: #339933;">;</span></pre></div></div>

<p>Testujemy&#8230;</p>
]]></content:encoded>
			<wfw:commentRss>http://www.losoft.org/blog/2009/11/raportowanie-bledow-strony-klienta/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Blokada wyjscia ze strony</title>
		<link>http://www.losoft.org/blog/2009/10/blokada-wyjscia-ze-strony/</link>
		<comments>http://www.losoft.org/blog/2009/10/blokada-wyjscia-ze-strony/#comments</comments>
		<pubDate>Tue, 13 Oct 2009 18:16:04 +0000</pubDate>
		<dc:creator>lookout</dc:creator>
				<category><![CDATA[JS/AJAX]]></category>
		<category><![CDATA[Web]]></category>

		<guid isPermaLink="false">http://www.losoft.org/blog/?p=1265</guid>
		<description><![CDATA[Wyobrazmy sobie pania Jole, ktora plodzi cos przez godzine, nastepnie klika przycisk Odswiez i cala jej prace szlag trafia. Znajoma sytuacja? Dlatego tez czasem musimy zabezpieczyc dane uzytkownikow, przed nimi samymi. Najlepsza metoda na zabezpieczenie wiekszosci takich przypadkow, tzn. wywolanie funkcji Wstecz, Dalej, Odswiez czy Strona domowa, jest podpiecie sie pod zdarzenie onbeforeunload i wyswietlenie [...]]]></description>
			<content:encoded><![CDATA[<p>Wyobrazmy sobie pania Jole, ktora plodzi cos przez godzine, nastepnie klika przycisk <span class="notranslate code">Odswiez</span> i cala jej prace szlag trafia. Znajoma sytuacja? Dlatego tez czasem musimy zabezpieczyc dane uzytkownikow, przed nimi samymi.</p>
<p>Najlepsza metoda na zabezpieczenie wiekszosci takich przypadkow, tzn. wywolanie funkcji <span class="notranslate code" onclick="window.history.back();" style="cursor: pointer;">Wstecz</span>, <span class="notranslate code" onclick="window.history.forward();" style="cursor: pointer;">Dalej</span>, <span class="notranslate code" onclick="window.location.reload();" style="cursor: pointer;">Odswiez</span> czy <span class="notranslate code">Strona domowa</span>, jest podpiecie sie pod zdarzenie <span class="notranslate code">onbeforeunload</span> i wyswietlenie stosownego komunikatu, aby user mial czas zastanowic sie czy na pewno chce zrobic to co robi.</p>
<p>Ustawiamy zmienna <span class="notranslate code">isChanged</span>, okreslajaca czy dane, np. na formularzach, sa zmienione.</p>

<div class="wp_syntax"><div class="code"><pre class="javascript" style="font-family:monospace;"><span style="color: #003366; font-weight: bold;">var</span> isChanged <span style="color: #339933;">=</span> <span style="color: #003366; font-weight: bold;">false</span><span style="color: #339933;">;</span>
<span style="color: #003366; font-weight: bold;">function</span> setIsChanged<span style="color: #009900;">&#40;</span>value<span style="color: #009900;">&#41;</span>
<span style="color: #009900;">&#123;</span>
	isChanged <span style="color: #339933;">=</span> value<span style="color: #339933;">;</span>
<span style="color: #009900;">&#125;</span><span style="color: #339933;">;</span></pre></div></div>

<p>Tworzymy metode wyladowania strony</p>

<div class="wp_syntax"><div class="code"><pre class="javascript" style="font-family:monospace;"><span style="color: #003366; font-weight: bold;">function</span> preventLostData<span style="color: #009900;">&#40;</span>event<span style="color: #009900;">&#41;</span>
<span style="color: #009900;">&#123;</span>
	<span style="color: #000066; font-weight: bold;">if</span> <span style="color: #009900;">&#40;</span><span style="color: #339933;">!</span>event<span style="color: #009900;">&#41;</span> event <span style="color: #339933;">=</span> window.<span style="color: #660066;">event</span><span style="color: #339933;">;</span>
	<span style="color: #000066; font-weight: bold;">if</span> <span style="color: #009900;">&#40;</span>isChanged<span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
		<span style="color: #000066; font-weight: bold;">if</span> <span style="color: #009900;">&#40;</span>window.<span style="color: #660066;">navigator</span>.<span style="color: #660066;">appName</span> <span style="color: #339933;">==</span> <span style="color: #3366CC;">&quot;Microsoft Internet Explorer&quot;</span><span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
			event.<span style="color: #660066;">cancelBubble</span> <span style="color: #339933;">=</span> <span style="color: #003366; font-weight: bold;">true</span><span style="color: #339933;">;</span>
		<span style="color: #009900;">&#125;</span>
		event.<span style="color: #660066;">returnValue</span> <span style="color: #339933;">=</span> <span style="color: #3366CC;">&quot;Nacisnij <span style="color: #000099; font-weight: bold;">\&quot;</span>Zapisz zmiany<span style="color: #000099; font-weight: bold;">\&quot;</span>, aby uchronic sie przed utrata danych.&quot;</span><span style="color: #339933;">;</span>
		<span style="color: #000066; font-weight: bold;">if</span> <span style="color: #009900;">&#40;</span>event.<span style="color: #660066;">stopPropagation</span><span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
			event.<span style="color: #660066;">stopPropagation</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
			event.<span style="color: #660066;">preventDefault</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</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: #339933;">;</span></pre></div></div>

<p>Podlaczamy nasza metode pod zdarzenie wyladowania strony</p>

<div class="wp_syntax"><div class="code"><pre class="javascript" style="font-family:monospace;">window.<span style="color: #660066;">onbeforeunload</span> <span style="color: #339933;">=</span> preventLostData<span style="color: #339933;">;</span></pre></div></div>

<p>Aby zasymulowac zmiane danych utworzymy modyfikatory, umozliwiajace zmiane wartosci zmiennej <span class="notranslate code">isChanged</span>.</p>

<div class="wp_syntax"><div class="code"><pre class="xml" style="font-family:monospace;"><span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;input</span> <span style="color: #000066;">type</span>=<span style="color: #ff0000;">&quot;button&quot;</span> <span style="color: #000066;">value</span>=<span style="color: #ff0000;">&quot;Symuluj zmiany&quot;</span> <span style="color: #000066;">onclick</span>=<span style="color: #ff0000;">&quot;setIsChanged(true);&quot;</span> <span style="color: #000000; font-weight: bold;">/&gt;</span></span>
<span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;input</span> <span style="color: #000066;">type</span>=<span style="color: #ff0000;">&quot;button&quot;</span> <span style="color: #000066;">value</span>=<span style="color: #ff0000;">&quot;Zapisz zmiany&quot;</span> <span style="color: #000066;">onclick</span>=<span style="color: #ff0000;">&quot;setIsChanged(false);&quot;</span> <span style="color: #000000; font-weight: bold;">/&gt;</span></span></pre></div></div>

<p>Powyzszy przyklad chroni przed zmiana strony, zamknieciem zakladki a nawet calej przegladarki (Nie testowane w ie &lt; 7, ale oL4c ten $h|t, 8).</p>
<p>Tutaj mozna potestowac:<br />
<span id="more-1265"></span></p>
]]></content:encoded>
			<wfw:commentRss>http://www.losoft.org/blog/2009/10/blokada-wyjscia-ze-strony/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>

