<?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>protofunc() &#187; ajax</title>
	<atom:link href="http://www.protofunc.com/category/javascript/ajax/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.protofunc.com</link>
	<description></description>
	<lastBuildDate>Sun, 25 Sep 2011 20:14:33 +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>Animation-Ajax-Queue erstellen</title>
		<link>http://www.protofunc.com/2009/03/15/animation-ajax-queue-erstellen/</link>
		<comments>http://www.protofunc.com/2009/03/15/animation-ajax-queue-erstellen/#comments</comments>
		<pubDate>Sun, 15 Mar 2009 13:34:23 +0000</pubDate>
		<dc:creator>alexander farkas</dc:creator>
				<category><![CDATA[ajax]]></category>
		<category><![CDATA[deutsch]]></category>
		<category><![CDATA[javascript]]></category>
		<category><![CDATA[jquery]]></category>
		<category><![CDATA[tutorial]]></category>
		<category><![CDATA[video]]></category>

		<guid isPermaLink="false">http://www.protofunc.com/?p=24</guid>
		<description><![CDATA[Eine häufigere Aufgabe ist es bei Ajax Requests den alten Content durch eine Animation zu verstecken, dann den Content auszutauschen und diesen dann durch eine weitere Animation anzuzeigen.
Hierbei stellt sich das Problem, daß die genaue Dauer der Ajax-Response unbekannt ist. Ist die Response deutlich kürzer als die Verstecken-Animation, kann der Inhalt nicht ausgetauscht werden, da [...]]]></description>
			<content:encoded><![CDATA[<p>Eine häufigere Aufgabe ist es bei Ajax Requests den alten Content durch eine Animation zu verstecken, dann den Content auszutauschen und diesen dann durch eine weitere Animation anzuzeigen.</p>
<p>Hierbei stellt sich das Problem, daß die genaue Dauer der Ajax-Response unbekannt ist. Ist die Response deutlich kürzer als die Verstecken-Animation, kann der Inhalt nicht ausgetauscht werden, da der User dann während dieser Animation plötzlich bereits den neuen Content sieht.</p>
<p>Um dieses Problem zu lösen, eignet sich <a href="http://docs.jquery.com/Core/queue">jQuery´s queue Methode</a> sehr gut, welche bereits genutzt wird, um Animationen in eine Warteschlange zu stellen. Um diesen Animationsqueue zu nutzen, muß der Ajax-Callback sich zu diesem Queue hinzufügen. Wird die Animation noch ausgeführt, wird dessen Ende abgewartet ansonsten wird die Callback-Funktion sofort ausgeführt.</p>
<p>Eine kleine Funktion, die aus einer Callback-Funktion eine sich in die Effekt-Warteschlange &#8220;anstellende&#8221; Funktion macht, könnte wie folgt aussehen:</p>
<pre class="brush: jscript;">
$.createQueueCallback = function(jElm, fn, type){
	type = type ||
		'fx';
	return function(){
		var that = this,
			args = arguments;

		jElm = $(jElm);
		jElm.queue(type, function(){
			fn.apply(that, args);
			jElm.dequeue(type);
		});
	};
};
</pre>
<p>Dieser Methode wird als 1. Parameter ein jQuery-DOM-Object, ein DOM-Objekt selbst oder ein CSS-Selektor, als 2. Parameter die Callback-Funktion und als 3. optionaler Parameter der Name der Warteschlange übergeben. Die Benutzung könnte so aussehen:</p>
<pre class="brush: jscript;">
function requestContent(){
	var live = $('#live')
		.hide(500);

	$.ajax({
		url: 'htmlsnippet.txt',
		success: $.createQueueCallback(live, function(data){
			live
				.html(data)
				.show(200);
		}),
		error: function(){
			//immer errors handeln
		}
	});
	return false;
}
</pre>
<p>Folgend findet ihr eine <a href="http://protofunc.com/scripts/jquery/ajax-fx.zip">Ajax-FX-Queue-Demo als Download</a>.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.protofunc.com/2009/03/15/animation-ajax-queue-erstellen/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Start Using Accessible JavaScript</title>
		<link>http://www.protofunc.com/2008/05/01/start-using-accessible-javascript/</link>
		<comments>http://www.protofunc.com/2008/05/01/start-using-accessible-javascript/#comments</comments>
		<pubDate>Thu, 01 May 2008 17:47:25 +0000</pubDate>
		<dc:creator>alexander farkas</dc:creator>
				<category><![CDATA[accessibility]]></category>
		<category><![CDATA[ajax]]></category>
		<category><![CDATA[deutsch]]></category>
		<category><![CDATA[javascript]]></category>

		<guid isPermaLink="false">http://www.protofunc.com/?p=12</guid>
		<description><![CDATA[Obwohl ich dem Artikel Stop using Ajax! von  James  Edwards (&#8220;Brothercake&#8221;) und dem „zur Seite springen&#8221; von Chris Heilmann inhaltlich nur zustimmen kann, hat mir der Artikel nicht gefallen.  Neben einem kurzen Hinweis auf einen Lösungsweg für Übermorgen bzw. einen möglichen Workaround empfand ich ihn vor allem als de-konstruktiv. In vielerlei Hinsicht [...]]]></description>
			<content:encoded><![CDATA[<p>Obwohl ich dem Artikel <a href="http://dev.opera.com/articles/view/stop-using-ajax/">Stop using Ajax!</a> von  James  Edwards (&#8220;Brothercake&#8221;) und dem „<a href="http://www.wait-till-i.com/2008/04/29/oh-look-using-ajax-in-a-stupid-way-is-not-a-good-idea/">zur Seite springen</a>&#8221; von Chris Heilmann inhaltlich nur zustimmen kann, hat mir der Artikel nicht gefallen.  Neben einem kurzen Hinweis auf einen Lösungsweg für Übermorgen bzw. einen möglichen Workaround empfand ich ihn vor allem als de-konstruktiv. In vielerlei Hinsicht lenkt er auch vom eigentlich Hauptproblem für Javascripter und möglichen Lösungen ab.  Zusammen mit dem Standard-Test in den vielen Barrierefreiheitschecklisten (Schalten Sie JavaSript im Browser aus und überprüfen Sie, ob die Seite immer noch funktioniert) sorgt er für ein vollkommen falsches Bild von den Barrierefreiheitsproblemen. Jede Zuwiderhandlung gegen diesen Checkpunkt wird in der Regel mit dem größtmöglichen Punktabzug bestraft. Dabei sagt dieser SEO-Test kaum etwas über die Zugänglichkeit von JavaScript aus.</p>
<h2>Nicht AJAX, sondern JavaScript ist „unreif&#8221; für Screenreader</h2>
<p>Seien wir mal ehrlich nicht AJAX selbst oder das „Nicht-Vorhandensein von JavaScript&#8221; ist aus Zugänglichkeitsgesichtspunkten „unreif&#8221;. JavaScript und vor allem seine Unterstützung in assistiven Technologien sind höchst problematisch und sehr schwer zusammen zu bringen. AJAX ist lediglich eine gewisse Verschärfung des eigentlichen Problems, da zwischen User-Aktion und Content-/Style-Änderung eine größere Verzögerung liegt.  Nehmen wir zum Beispiel die <a href="http://onlinetools.org/tools/domtabdata/">DOMTabs</a>. Diese bestehen nicht nur die meisten standardisierten Checkpunkte, sondern gehen sogar etwas darüber hinaus. Dies ist angesichts des Know-Hows des Entwicklers auch kein Wunder, aber wirklich barrierefrei arbeiten diese im Screenreader nicht.<br />
Das, in den meisten aktuellen Screenreadern, wohl am häufigsten auftretende „Fehlverhalten&#8221; dürfte sein, dass der Screenreader-User auf einen Tab-Link klickt und erwartet, entweder auf eine neue Seite zu kommen bzw. zum ausgewählten Inhalt zu springen. In den meisten Fällen wird jedoch erstmal nichts passieren bzw. der Screenreader wird stur die nächsten Tab-Links vorlesen (Obwohl der Inhalt des ausgewählten Tabs korrekt in der Sprachausgabe upgedatet wurde.). Noch problematischer wird es, wenn man zum einfachen Wechsel ein bisschen Animation hinzufügt. Hier kann es passieren, dass der neue Inhalte nicht  upgedatet wird oder der alte Inahlt ebenfalls noch im Screenreader-Buffer schlummert.  Man bedenke, dass es sich bei diesem Tab-Switch um ein relativ einfaches Gebilde handelt. User Interfaces, die heutzutage mit JavaScript realisiert werden, sind nicht selten wesentlich komplizierter und die Berücksichtigung aller möglichen unterschiedlichen Barrieren erfordert viel Arbeit (Lösungsansätze für die eine Barriere können nicht selten eine neue befördern). Mit diesen JavaScript-Barrieren werden Entwickler bei ihrer Arbeit wesentlich häufiger konfrontiert als mit den AJAX-Barrieren.</p>
<h2>JavaScript ist nicht tot zu kriegen</h2>
<p>JavaScripter, denen Zugänglichkeit am Herzen liegt, müssen sich trotz der Probleme nicht in einer Höhle verkriechen. Dies hat vor allem drei Gründe:</p>
<ol>
<li>Die Barrierefreiheit von reinen HTML &amp; CSS Webseiten ist alles andere als „gottgegeben&#8221; und erfordert ebenfalls gewisses Know-How. Den Entwicklern, die sich etwas mit Zugänglichkeit beschäftigt haben, werden auch ein paar Beispiele einfallen, die zu dem Schluss führen könnten, dass Screenreader für bestimmtes, theoretisch vollkommen korrektes HTML noch nicht reif sind.</li>
<li>JavaScript ist die Sprache des Web. Trotz der oben genannten Probleme gehört JavaScript korrekt eingesetzt zur Lösung von Barrieren im Netz und nicht umgekehrt. (beispielhaft: <a href="http://www.webkrauts.de/2006/12/23/css-und-javascript/">Denn Sie tun es &#8211; CSS und Javascript</a></li>
<li>Die Zugänglichkeit von JavaScript wird derzeit deutlich vorangetrieben (dazu später mehr)</li>
</ol>
<p>Ein Beispiel: Entgegen allen Behauptungen Flyout-Menüs wären böse, sollten wir uns darüber im klaren sein, dass in bestimmten Fällen ein Drop-Down-Menü oder ähnlich dynamisches Menü (<a href="http://www.barrierekompass.de/weblog/index.php?itemid=217">Accessibility im Schatten der Usability</a> und <a href="http://www.barrierekompass.de/weblog/index.php?itemid=397">Neue Studie zur Usability unterschiedlicher Naviagtions-Methoden</a>, die beste und gebrauchtauglichste Möglichkeit ist, eine Navigation zu erstellen. Jedoch gerade die falsche Ansicht, dass solche Menüs auch in veralteten Browsern ohne JavaScript funktionieren müssen, hat Entwickler dazu gebracht Techniken einzusetzen, die weder gebrauchstauglich sind noch ein Mindestmaß an Barrierefreiheit erfüllen. Diese CSS-Only-Lösungen können nicht richtig mit der Tastatur bedient werden, sie passen sich weder „Fehleingaben&#8221; des Users noch seiner Bildschirmgröße an und sie sind aufgrund  fehlerhaft verschachtelter Links (gut versteckt in konditionellen Kommentaren) ein Showstopper für Screenreader. Für so etwas ist JavaScript schlichtweg die sauberste und barriereärmste Lösung.</p>
<h2>WAI &#8211; ARIA &#8211; die Lösung für zugängliches JavaScript</h2>
<p>In Sachen barrierefreies JavaScript tuen sich mit ARIA (Accessible Rich Internet Application) bereits heute und vor allem morgen nutzbare Möglichkeiten auf, seine „Widgets&#8221; erheblich barrierefreier zu gestalten. Hierbei bekommen typische &#8220;JavaScript-Widget-Elemente&#8221; (häufig Navigations- oder andere Eingabeelemente) zusätzliche semantische Attribute, welche ihre Rolle und Eigenschaften in maschinenlesbarer Form über den Browser dem Screenreader zugänglich machen können. Es existieren beispielsweise Rollen und zusätzliche Eigenschaften für Slider, Tabs, Grids, Menüs u.v.m.. Hierbei sind ebenfalls sog. Eigenschaften für live regions enthalten, welche die Zugänglichkeit von AJAX erhöhen, allerdings werden diese noch nicht ausreichend unterstützt. Die Unterstützung der zuvor genannten Widget-Rollen, die der W3C-Entwurf in der Praxis dagegen hat, ist trotz einiger Wandlungen des Entwurfs in jüngster Zeit sowie unterschiedlicher Implementierungen, atemberaubend. Mozilla hat bereits mit Firefox 1.5 eine inzwischen veraltete und mit Firefox 3 überarbeitete Implementierung begonnen (zu dem unterschiedlichen Support in den Browsern: <a href="http://learningtheworld.eu/2008/wai-aria-update/">http://learningtheworld.eu/2008/wai-aria-update/</a>, <a href="http://blog.namics.com/2008/03/sxsw-2008.html">http://blog.namics.com/2008/03/sxsw-2008.html</a> ). Gleichzeitig besteht in folgenden Screenreadern/Vergrösserungssystemen grundlegender Support: Window Eyes 5.5+, Jaws 7.0+, ZoomText, Orca 2.20+. Die meisten deutschen Screenreader-Nutzer (angeblich 70%)  nutzen Jaws. Häufig liegen sie ein bis zwei Versionsnummern zur aktuellen Version zurück. Derzeit ist die aktuellste Jaws-Version bei 9.0 angelangt. Gleichzeitig wird der Support in den Browsern erweitert: Opera 9.5 unterstützt ARIA ähnlich wie Firefox 3, Microsoft hat dem IE8 eine etwas abweichende Implementierung spendiert und Webkit (Safari) haben mit der Umsetzung begonnen. Dies ist für JavaScripter eine extrem erfreuliche Nachricht. Die neuesten Browser, von denen hier die Rede ist, können kostenlos genutzt werden bzw. werden zumindest kostenlos mitgeliefert. Bei den verhältnismäßig teuren Screenreader taugen bereits die älteren Modelle. Spätestens mit Erscheinen der nächsten Generation dieser Browser steht die Implementierung (formaler Standard hin oder her) fest und kann genutzt werden. Ich kann nur jedem Entwickler raten sich mit ARIA näher zu beschäftigen und neben den <a href="http://blog.ginader.de/archives/2008/03/16/Accessible-Javascript-Barcamp-Brighton-2.php">anderen Techniken</a> für <a href="http://ichwill.net/">barrierefreies JavaScript </a>bald bald einzusetzen <img src='http://www.protofunc.com/wp-includes/images/smilies/icon_smile.gif' alt=':-)' class='wp-smiley' /> .</p>
<h2>weiterführendeLinks:</h2>
<ul>
<li><a href="http://www.protofunc.com/2008/06/23/aria-grundlagen/">WAI-ARIA Grundlagen</a></li>
<li><a href="http://www.barrierekompass.de/weblog/index.php?itemid=541">Martin Kliehm / Barrierefreie Web 2.0 Anwendungen mit WAI ARIA</a></li>
<li><a href="http://www.w3.org/WAI/intro/aria.php">W3C / WAI-ARIA Overview</a></li>
<li><a href="http://firefox.cita.uiuc.edu/">Firefox Accessibility Extension zur Überwachung von ARIA-Rollen, -Eigenschaften, Eigenschaftsänderung sowie einem Focus-Inspector</a></li>
<li><a href="http://developer.mozilla.org/en/docs/Accessible_DHTML">ARIA: Accessible Rich Internet Applications von mozilla mit Beispielen</a></li>
<li><a href="http://test.cita.uiuc.edu/aria/">ARIA Examples von Illinois Center for Information Technology Accessibility</a></li>
<li><a href="http://juicystudio.com/article/wai-aria-live-regions.php">WAI-ARIA Live Regions</a></li>
</ul>
]]></content:encoded>
			<wfw:commentRss>http://www.protofunc.com/2008/05/01/start-using-accessible-javascript/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>AJAX managen</title>
		<link>http://www.protofunc.com/2007/11/11/ajax-managen/</link>
		<comments>http://www.protofunc.com/2007/11/11/ajax-managen/#comments</comments>
		<pubDate>Sun, 11 Nov 2007 10:39:47 +0000</pubDate>
		<dc:creator>alexander farkas</dc:creator>
				<category><![CDATA[ajax]]></category>
		<category><![CDATA[deutsch]]></category>
		<category><![CDATA[javascript]]></category>
		<category><![CDATA[jquery]]></category>

		<guid isPermaLink="false">http://www.protofunc.com/?p=3</guid>
		<description><![CDATA[Nicht selten wünscht man sich, von seinen AJAX-Responses , dass sie in der gleichen Reihenfolge ankommen, in der die Anfragen abgesendet wurden bzw. zumindest in der selben Reihenfolge in der sie beim Server verarbeitet wurden (z.B.: Warenkorb). In anderen Fällen ist dagegen klar, dass eine Antwort auf eine Anfrage keinen Sinn mehr macht, da der [...]]]></description>
			<content:encoded><![CDATA[<p>Nicht selten wünscht man sich, von seinen AJAX-Responses , dass sie in der gleichen Reihenfolge ankommen, in der die Anfragen abgesendet wurden bzw. zumindest in der selben Reihenfolge in der sie beim Server verarbeitet wurden (z.B.: Warenkorb). In anderen Fällen ist dagegen klar, dass eine Antwort auf eine Anfrage keinen Sinn mehr macht, da der User sich &#8211; während der Verarbeitung des XHR-Requests &#8211; entschieden hat einen anderen Beitrag auszuwählen.</p>
<p>Aufgrund der Asynchronität von AJAX, schwankender Latency sowie unterschiedlich langer Verarbeitung durch serverseitige Scripte kann dies jedoch nicht vorausgesetzt werden. Um derartige sowie ähnliche AJAX-Anfragen zu behandeln, habe ich ein kleines jQuery-Plugin zum <a href="http://www.protofunc.com/scripts/jquery/ajaxManager/">managen von AJAX</a> geschrieben.</p>
<p>Mit diesem Script lassen sich AJAX-Anfragen queuen, abbrechen blocken sowie AJAX-Antworten synchronisieren. Zum <a href="http://www.protofunc.com/scripts/jquery/ajaxManager/" title="Beschreibung, Dokumentation, Demo und Download">$.ajaxManager</a>.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.protofunc.com/2007/11/11/ajax-managen/feed/</wfw:commentRss>
		<slash:comments>17</slash:comments>
		</item>
	</channel>
</rss>

