<?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>Brusdeylins &#187; Flex</title>
	<atom:link href="http://brusdeylins.info/tag/flex/feed/" rel="self" type="application/rss+xml" />
	<link>http://brusdeylins.info</link>
	<description></description>
	<lastBuildDate>Thu, 26 Jan 2012 19:35:02 +0000</lastBuildDate>
	<generator>http://wordpress.org/?v=2.8.6</generator>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
			<item>
		<title>Bookmarking Ajax/Flash</title>
		<link>http://brusdeylins.info/webdesign/bookmarking-ajax-flash/</link>
		<comments>http://brusdeylins.info/webdesign/bookmarking-ajax-flash/#comments</comments>
		<pubDate>Sun, 22 Mar 2009 13:45:12 +0000</pubDate>
		<dc:creator>Matthias Brusdeylins</dc:creator>
				<category><![CDATA[Webdesign]]></category>
		<category><![CDATA[Ajax]]></category>
		<category><![CDATA[Flash]]></category>
		<category><![CDATA[Flex]]></category>
		<category><![CDATA[Javascript]]></category>

		<guid isPermaLink="false">http://www.brusdeylins.info/?p=294</guid>
		<description><![CDATA[
Die L&#246;sung ist bekannt und an sich einfach. Wird mittels Ajax / Flex / Flash dynamisch ein neuer Inhalt angezeigt, muss mittels Java-Script die URL des Browsers entsprechend ge&#228;ndert werden. Der Haken dabei: der Browser l&#228;dt die Seite neu! Dies kann aber mit einem Trick verhindert werden.
Hier spielt das Hash-Zeichen (#)  in der URL [...]]]></description>
			<content:encoded><![CDATA[<p><!--:de-->
<a href="http://brusdeylins.info/media/post-images/ajax-flash-flex.jpg" title="Bookmarking Ajax / Flex - (c) Matthias Brusdeylins" rel="lightbox[singlepic46]" >
	<img class="ngg-singlepic ngg-right" src="http://brusdeylins.info/media/cache/46__150x300_ajax-flash-flex.jpg" alt="Bookmarking Ajax / Flex" title="Bookmarking Ajax / Flex" />
</a>
Das Problem ist bekannt: Webanwendungen die ihre zentralen Inhalte mittels Ajax-Technologie &#228;ndern, m&#252;ssen zus&#228;tzlich daf&#252;r Sorge tragen, dass ihre dynamisch ge&#228;nderten Inhalte ebenfalls in der URL-Leiste des Browsers referenzierbar bleiben. Diese Aufgabe muss auch von Flash-/Flex-Anwendungen durchgef&#252;hrt werden. Wird im Flash-Plugin ein neuer Inhalt nachgeladen, &#228;ndert sich normalerweise nichts an der URL im Browserfenster. Somit gibt es ohne Eigeninitiative keine M&#246;glichkeit direkt an den neu angezeigten Inhalt zu springen.<!--:--><span id="more-294"></span><!--:de--></p>
<p>Die L&#246;sung ist bekannt und an sich einfach. Wird mittels <a title="Was ist Ajax" href="http://ajaxpatterns.org/Whats_Ajax" target="_blank">Ajax</a> / <a title="Was ist Flex" href="http://www.adobe.com/products/flex/overview/" target="_blank">Flex</a> / <a title="Die Flash Plattform" href="http://www.adobe.com/flashplatform/" target="_blank">Flash</a> dynamisch ein neuer Inhalt angezeigt, muss mittels Java-Script die URL des Browsers entsprechend ge&#228;ndert werden. Der Haken dabei: der Browser l&#228;dt die Seite neu! Dies kann aber mit einem Trick verhindert werden.</p>
<p>Hier spielt das <strong>Hash-Zeichen (#) </strong> in der URL eine wichtige Rolle. Es dient zur Angabe eines Ankerpunktes (siehe <a title="W3C - Syntax of anchor names" href="http://www.w3.org/TR/REC-html40/struct/links.html#h-12.2.1" target="_blank">W3C-Syntax of anchor names</a>) in der aktuell angezeigten Webseite. Eine Ankerpunkt-Angabe geh&#246;rt streng genommen nicht mehr zur URL, da sie nicht an den Web- / Applikationsserver gesendet wird. Der Browser versucht den mit dem Hash-Zeichen angegebenen Ankerpunkt innerhalb der aktuellen Seite zu finden und scrollt dann direkt an diesen Punkt. Findet der Browser keinen passenden Anker, bleibt die Position unver&#228;ndert. Eine Webseite kann somit ein Inhaltsverzeichnis am Anfang pr&#228;sentieren, deren Links nur reine Ankerwerte enthalten. Ein Klick auf solch einen Link sorgt daf&#252;r, dass der Browser an die Ankerstelle des gew&#252;nschten Kapitels  springt. Dabei wird die Webseite <em>nicht</em> neu geladen. Und genau diesen Effekt macht man sich hier zu Nutze.</p>
<p>Wird der angezeigte Inhalt mittels Ajax oder in einer Flash-Anwendung aktualisiert, so muss der Ankerwert, welcher f&#252;r den angezeigten Inhalt steht, mittels <strong>Java-Script</strong> in der URL angepasst werden. Hierf&#252;r gibt es zwei M&#246;glichkeiten. Entweder man setzt den Wert in <code>window.location.<strong>hash</strong></code> oder man verwendet die Location-Methode <code>window.location.<strong>Replace()</strong></code> mit exakt der aktuellen URL, die nur am Ankerwert ge&#228;ndert wurde (unterscheidet sich die URL <em>vor</em> dem Anker-Hash von der aktuellen URL, startet der Browser eine neue Anfrage und l&#228;dt die entsprechende Seite nach!). Der Unterschied zwischen diesen beiden M&#246;glichkeiten liegt in der Browser-History. Wird die URL mittels der Methode <code>Replace()</code> ersetzt, wird die &#252;berschriebene URL-Angabe im Browser <em>nicht</em> als &#8220;besuchte Seite&#8221; vermerkt, was dazu f&#252;hrt, dass eine Navigation &#8220;zur&#252;ck&#8221; mittels des <strong>Back-Buttons</strong> nicht m&#246;glich ist. Dies kann ein gew&#252;nschter Effekt sein, wenn eine Anwendung ohne die Browser-Navigations-Buttons arbeiten, aber Bookmarking unterst&#252;tzen will.</p>
<p>Da der Web- / Applikationsserver bei einer Anfrage der Art <code>http://somedomain.com/path/to/site/#<em>document-id</em></code> nur die Angabe <code>http://somedomain.com/path/to/site/</code> vom Browser zugesendet bekommt, also keine Anker-Angaben, muss mittels Ajax oder Flash/Flex (f&#252;r Flex siehe: <a title="Flex-Methode von Java-Script aufrufen" href="http://livedocs.adobe.com/flex/2/docs/00001014.html#191735" target="_blank">Accessing Flex from Javascript</a> und <a title="Javascript von Flex aufrufen" href="http://livedocs.adobe.com/flex/2/docs/00001007.html#197592" target="_blank">Accessing Javascript from Flex</a>) zu Beginn zus&#228;tzlich eine neue Anfrage f&#252;r den Dokumenten-Inhalt gestartet werden. Hierzu wertet ein Java-Script nachdem die Webseite eingeladen wurde (Event-Funktion in <code>window.onload</code>) den Inhalt von <code>window.location.<strong>hash </strong></code>aus und ruft die entsprechende Nachlade-Funktion f&#252;r Ajax oder in einer Flash-Anwendung auf.  Die Adresse k&#246;nnte daf&#252;r beispielsweise <code>http://somedomain.com/path/to/document/<em>document-id</em></code>/ lauten. Diese Aktion muss ein Javascript auch dann durchf&#252;hren, wenn sich durch den Back-Button oder durch eine &#8220;seiteninterne&#8221; Navigation der Anker-Wert &#228;nderte. Um diese &#196;nderungen zu &#252;berwachen bietet es sich an, einen <strong>Timer</strong> zu implementieren, der in regelm&#228;&#223;igen Abst&#228;nden &#252;berpr&#252;ft, ob die URL im Browser noch zu dem aktuell angezeigten Inhalt passt. Wenn nicht, wird hier wieder per Ajax-Request bzw. innerhalb der Flash-/Flex-Anwendung der Inhalt angepasst. Eine detaillierte Beschreibung zu diesem &#8220;Ajax-Pattern&#8221; kann unter <a title="Ajax-Patterns - Unique URLs" href="http://ajaxpatterns.org/Unique_URLs" target="_blank">ajaxpatterns.org</a> nachgelesen werden. Hier findet man auch passende Codebeispiele.</p>
<p>(updating url for bookmarking AJAX or Flash applications using the anchor syntax)<!--:--></p>
]]></content:encoded>
			<wfw:commentRss>http://brusdeylins.info/webdesign/bookmarking-ajax-flash/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>

