<?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>Creating The Web... &#187; hijax</title>
	<atom:link href="http://www.simon-jensen.net/tag/hijax/feed" rel="self" type="application/rss+xml" />
	<link>http://www.simon-jensen.net</link>
	<description>Internet entusiast og webprogrammør Simon Jensen</description>
	<lastBuildDate>Fri, 19 Aug 2011 14:22:38 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.3.1</generator>
		<item>
		<title>Når AJAX er bedst</title>
		<link>http://www.simon-jensen.net/naar-ajax-er-bedst.html</link>
		<comments>http://www.simon-jensen.net/naar-ajax-er-bedst.html#comments</comments>
		<pubDate>Tue, 23 Sep 2008 07:54:33 +0000</pubDate>
		<dc:creator>Simon Jensen</dc:creator>
				<category><![CDATA[Udvikling]]></category>
		<category><![CDATA[ajax]]></category>
		<category><![CDATA[akismet]]></category>
		<category><![CDATA[hijax]]></category>
		<category><![CDATA[javascript]]></category>
		<category><![CDATA[kommentar]]></category>
		<category><![CDATA[spam]]></category>

		<guid isPermaLink="false">http://www.simon-jensen.net/naar-ajax-er-bedst.html</guid>
		<description><![CDATA[Jeg har tidligere haft skrevet om Hijax og for nyligt om Hijax i praksis, emner hvor prædiken går på hvor vigtigt det kan være ikke at udelukke &#8220;dem som ikke kan afvikle Javascript&#8220;&#8230; men der findes dog også de modsatte eksempler &#8211; hvor &#8220;de&#8221; bare skal blive væk! Sidste gang jeg skiftede design m.m. her [...]]]></description>
			<content:encoded><![CDATA[<p><strong>Jeg har tidligere haft skrevet om </strong><a type="Hijax" href="http://www.simon-jensen.net/hijax.html"><strong>Hijax</strong></a><strong> og for nyligt om </strong><a type="Hijax i praksis" href="http://www.simon-jensen.net/hijax-i-praksis.html"><strong>Hijax i praksis</strong></a><strong>, emner hvor prædiken går på hvor vigtigt det kan være ikke at udelukke &#8220;<span style="font-style: italic;">dem som ikke kan afvikle Javascript</span>&#8220;&#8230; men der findes dog også de modsatte eksempler &#8211; hvor &#8220;<em>de</em>&#8221; bare skal blive væk!</strong></p>
<p>Sidste gang jeg skiftede design m.m. her på bloggen tog jeg hijax-princippet til mig, hvilket f.eks. har gjort, at man nu kan søge &#8220;live&#8221; <span style="font-style: italic;">med</span> Javascript og &#8220;almindeligt&#8221; <span style="font-style: italic;">uden</span> Javascript. Jeg ville have brugt samme teknik til kommentering, men kom aldrig længere end til at man kunne kommentere via et &#8220;normalt&#8221; POST.</p>
<h3>Blog spam helvede <img src="/admin/editors/fckeditor/editor/images/smiley/msn/angry_smile.gif" alt="" /></h3>
<p>At have en ganske almindelig standard HTML-formular er, nu til dags, næsten det samme som at sige &#8220;<em>Jeg vil gerne være offer for al jeres lorte-spam &#8211; bare fyr løs</em>&#8220;. Det var i hvert hvad resultatet for mig&#8230;</p>
<p><span id="more-119"></span></p>
<p>Heldigvis havde jeg implementeret <a type="Akismet Antispam" href="http://www.simon-jensen.net/akismet-antispam.html">Akismet Antispam</a>, og havde i min administration rimelig nem mulighed for at se hvilke kommentarer der var spam&#8230; men ærlig talt, det er sku liiiidt irriterende at være nød til konstant at slette spam-kommentarer! Man kunne selvfølgelig bare lade være med at gemme de kommentarer Akismet tror er spam &#8211; men man kan jo aldrig vide sig sikker?</p>
<p>Følgende screenshot var resultatet af ikke at have været ved computeren en ellers så stille og rolig søndag &#8211; Mandag morgen; vær så god at slette spam!</p>
<p style="text-align: center;"><a href="http://www.simon-jensen.net/admin/uploads/image/ajax-comment/60-spam-comments.png"><img title="60 nye spam kommentare!" src="http://www.simon-jensen.net/admin/uploads/image/ajax-comment/60-spam-comments.png" border="1" alt="60 nye spam kommentare!" width="490" height="459" /></a></p>
<h3>Spam kan mindskes med AJAX!</h3>
<p>Nu har jeg endelig fået taget mig sammen til at få implementeret <span style="font-style: italic;">kommentering med AJAX</span>, ligesom i det gamle design. Men ikke nok med det &#8211; <span style="font-weight: bold;">jeg har nu helt fjernet muligheden for at kommentere, hvis man ikke har Javascript understøttet</span>! Jeps, det er grove løjer, men jeg har set mig nødsaget til det → se ovenstående screenshot <img src="/admin/editors/fckeditor/editor/images/smiley/msn/tounge_smile.gif" alt="" />.</p>
<p>Faktisk har jeg haft det nye &#8220;setup&#8221; til at kører i et par dage nu, og indtil nu er der ikke kommet en eneste spam-kommentar igennem &#8211; Herligt!</p>
<p>Kommenteringen er testet i IE 6 og 7 + Firefox 3 til Windows samt Firefox 3 og Safari 3 til Mac &#8211; skulle der være nogen derud, som ikke synes at kunne få det til at virke må I MEGET GERNE skrive mig en mail på &#8220;admin[snabela]simon-jensen.net&#8221;.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.simon-jensen.net/naar-ajax-er-bedst.html/feed</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Hijax i praksis</title>
		<link>http://www.simon-jensen.net/hijax-i-praksis.html</link>
		<comments>http://www.simon-jensen.net/hijax-i-praksis.html#comments</comments>
		<pubDate>Thu, 11 Sep 2008 08:06:54 +0000</pubDate>
		<dc:creator>Simon Jensen</dc:creator>
				<category><![CDATA[Udvikling]]></category>
		<category><![CDATA[ajax]]></category>
		<category><![CDATA[hijax]]></category>
		<category><![CDATA[javascript]]></category>
		<category><![CDATA[php]]></category>

		<guid isPermaLink="false">http://www.simon-jensen.net/hijax-i-praksis.html</guid>
		<description><![CDATA[Tilbage i april fandt jeg frem til hijax princippet, og i den forbindelse lovede jeg at der ville komme en mere praktisk gennemgang &#8211; det vil jeg så forsøge mig med nu. Mens sidste post om hijax kort fortalte princippet bag hijax, og snakken mere gik på &#8220;hvorfor&#8221; man burde bruge det, har jeg nu [...]]]></description>
			<content:encoded><![CDATA[<p><span style="font-weight: bold;">Tilbage i april fandt jeg frem til </span><a title="Hijax" href="http://www.simon-jensen.net/hijax.html"><span style="font-weight: bold;">hijax</span></a><span style="font-weight: bold;"> princippet, og i den forbindelse lovede jeg at der ville komme en mere praktisk gennemgang &#8211; det vil jeg så forsøge mig med nu.</span></p>
<p>Mens sidste post om hijax kort fortalte princippet bag hijax, og snakken mere gik på &#8220;hvorfor&#8221; man burde bruge det, har jeg nu haft mulighed for rent faktisk at lege lidt med hijax, og mener nu der skulle være basis for at skrive endnu en post herom.</p>
<h3>Hijax super kort</h3>
<p>Jeg har taget udgangspunkt i et simpelt eksempel, som jeg selv synes forklare det praktiske bag princippet. Super kort fortalt, så går hijax ud på at &#8220;hijacke&#8221; (overtage) funktionalitet på din hjemmeside og udføre denne via AJAX, men <span style="font-style: italic;">SAMTIDIG</span> skal det være muligt at afvikle samme funktionalitet <span style="font-style: italic;">UDEN</span> brug af Javascript &#8211; grundtanken i <a title="Læs mere om denne ide på Wikipedia" href="http://en.wikipedia.org/wiki/Fault-tolerant_system" target="_blank">graceful degradation</a>.</p>
<p><span id="more-110"></span></p>
<h3>Hijax en formular</h3>
<p>Hijax kan f.eks. bruges i forbindelse med en formular &#8211; I denne post har jeg taget udgangspunkt i en simpelt udgave af en tilmeldingsformular til et tænkt nyhedsbrev, men i princippet kan hijax bruges til en hvilken som helst formular.</p>
<p><span style="font-weight: bold;">HTML formularen:</span></p>
<p>Formularen er meget standard med to inputs og postering via POST-metoden. Vi kan bruge <span style="font-family: Courier New;">onsubmit</span>-attributten til at hijacke formularen. <span style="font-family: Courier New;">onsubmit</span> giver os nemlig mulighed for at udføre en stump Javascript <em>før</em> dataen vil blive postet til serveren. I eksemplet herunder tager jeg hele formularen med som parameter til Javascript funktionen <span style="font-family: Courier New;">hijax(form)</span>. For at være sikker på at det &#8220;almindelige&#8221; POST ikke bliver udført returnerer vi <span style="font-family: Courier New;">false</span> efterfølgende&#8230; da dette faktisk er direkte Javascripting i formularen vil dennes postering <em>kun</em> stoppes hvis Javascript er understøttet.</p>
<pre>&lt;form method="post" action="<strong>signup.php</strong>" onsubmit="<strong>hijax(this); return false;</strong>"&gt;
    &lt;label&gt;Name:&lt;/label&gt;
    &lt;input type="text" name="name"   /&gt;
    &lt;label&gt;E-mail:&lt;/label&gt;
    &lt;input type="text" name="email"   /&gt;
    &lt;input type="submit"   /&gt;
&lt;/form&gt;</pre>
<p><strong>Javascriptet:</strong></p>
<p>Selve Javascriptet behøver ikke være mere indviklet end vist herunder. Jeg har endnu engang taget udgangspunkt i et AJAX request med <a title="Prototype JS" href="http://www.prototypejs.org/" target="_blank">Prototype JS</a>.</p>
<p>Her serializerer jeg hele formularen, og tilføjet en ekstra parameter <span style="font-family: Courier New;"><strong>hijax=true</strong></span>. Selve værdien er denne parameter bruger jeg faktisk ikke til noget, hvilket du vil kunne se i understående PHP-script. Vi poster det hele til PHP-filen <span style="font-family: Courier New;">signup.php</span>, hvilken også var action-fil i HTML-formularen ovenfor.</p>
<pre>hijax = function(formular) {
    var url = <strong>signup.php</strong>;
    var params = Form.serialize(formular) + <strong>&amp;hijax=true</strong>;
    new Ajax.Request(url, {method:post, postBody:params});
}</pre>
<p><strong>PHP serveren:</strong></p>
<p>Som programmør forsøger jeg at være doven!? Jeg vil gerne have et optimalt resultat af min kode, og jeg vil skrive så få linier som muligt. Og her er hijax fantastisk, for ligemeget om vi posterer formularen &#8220;almindeligt&#8221; eller via AJAX, kan vi bruge samme fil til at håndtere posteringen.</p>
<p>Da jeg også forsøger at være lidt af en sucker for brugervenlighed, vil jeg gerne have mulighed for at give brugeren et response ligemeget om denne har Javascript-understøttelse eller ej. Tricket er altså at kunne adskille de to posteringer fra hinanden. Jeg har brugt den ekstra parameter ved AJAX-posteringer, men du vil sikkert selv kunne komme på andre løsninger (<em>tilføj dem gerne i kommentaren</em>)?</p>
<pre>&lt;?php
session_start();
$name = mysql_real_escape_string($_POST[name]);
$email = mysql_real_escape_string($_POST[email]);
<strong>$isHijax = $_POST[hijax];</strong>
mysql_query("INSERT INTO signups (name, email) VALUES ($name, $email)");
if(isset(<strong>$isHijax)</strong>) {
    <strong>echo</strong> Saved using AJAX...;
} else {
    <strong>$_SESSION[message]</strong> = Saved using normal post...;
    $redirect = $_SERVER[HTTP_REFERER];
    header("Location: $redirect");
}
?&gt;</pre>
<p>Med ovenstående metode vil du kunne &#8220;hijaxe&#8221; en formular, og med lidt få ændringer i formularens action-fil, vil du også have mulighed for at give brugerene et response, ligemeget om de bruger AJAX eller ej &#8211; Det er skudda smart <img src="/admin/editors/fckeditor/editor/images/smiley/msn/wink_smile.gif" alt="" />.</p>
<h3>Download</h3>
<p align="center"><a href="http://www.simon-jensen.net/admin/plugins/download_manager/download.php?ID=5"><img title="Download" src="http://www.simon-jensen.net/admin/uploads/image/download.png" alt="Download" width="119" height="104" align="absMiddle" /></a> <a title="Download kode-eksempel på hijax" href="http://www.simon-jensen.net/admin/plugins/download_manager/download.php?ID=5">Hijax af en formular (.zip)</a></p>
]]></content:encoded>
			<wfw:commentRss>http://www.simon-jensen.net/hijax-i-praksis.html/feed</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Hijax</title>
		<link>http://www.simon-jensen.net/hijax.html</link>
		<comments>http://www.simon-jensen.net/hijax.html#comments</comments>
		<pubDate>Sat, 05 Apr 2008 21:22:52 +0000</pubDate>
		<dc:creator>Simon Jensen</dc:creator>
				<category><![CDATA[Udvikling]]></category>
		<category><![CDATA[ajax]]></category>
		<category><![CDATA[gracefull degredation]]></category>
		<category><![CDATA[hijax]]></category>
		<category><![CDATA[standarder]]></category>

		<guid isPermaLink="false">http://www.simon-jensen.net/hijax.html</guid>
		<description><![CDATA[Forleden faldt jeg over en artikel af Jeremy Keith, et medlem af The Web Standard Project. Artiklen handler, sjovt nok, om hvordan man bør og kan, designe sin webapplikation, sådan at flest muligt får mulighed for at bruge den &#8211; en teknik Jeremey har valgt at  kalde &#8220;Hijax&#8221;. Problematikken med at visse applikationer udelukker visse [...]]]></description>
			<content:encoded><![CDATA[<p><strong>Forleden faldt jeg over </strong><a title="Læs artiklen her." href="http://domscripting.com/blog/display/41" target="_blank"><strong>en artikel af Jeremy Keith</strong></a><strong>, et medlem af </strong><a title="Gå til http://webstandards.org/." href="http://webstandards.org/" target="_blank"><strong>The Web Standard Project</strong></a><strong>. Artiklen handler, sjovt nok, om hvordan man bør og kan, designe sin webapplikation, sådan at flest muligt får mulighed for at bruge den &#8211; en teknik Jeremey har valgt at  kalde &#8220;Hijax&#8221;.</strong></p>
<p>Problematikken med at visse applikationer udelukker visse brugere, har længe fundet sted, og specielt opstår dette problem ved brugen af Javascripts, Flash eller andet scripting, som stille specielle krav til browseren. <em>AJAX is all about Javascript</em>, og med den store fremgang denne &#8220;teknik&#8221; har fået, er problemet, selvsagt, ikke blevet mindre.</p>
<p><em>Vi</em> hopper på Javascript-vognen uden at tænke over at der stadig kan komme brugere til, som ikke har mulighed for at afvikle de smarte features man kan opnå med AJAX, og i værste fald ødelægger dette mere, end den vundne feature ville have givet.</p>
<p>Dette er lige nøjagtig hvad man med Hijax vil forsøge at komme til livs! I denne post vil jeg forklare lidt mere grundlæggende, hvad der ligger i Hijax, for snarest at komme med en mere praktisk gennemgang.</p>
<p><span id="more-106"></span></p>
<h3>Hvorfor er det så vigtigt?</h3>
<p>Den aller vigtigste grund er, som beskrevet ovenfor, <em>at der faktisk stadig er brugere der ikke kan afvikle Javascript</em>! Jeps, den er god nok, og selvom det er brugergrupper som vi måske ikke tænker så meget på i det daglige, er de faktisk pænt store og med voksende indflydelse.</p>
<p>Den største gruppe af disse er vel stadig <em>søgemaskinernes søgerobotter</em>! Søgerobotter &#8220;taler&#8221; ganske simpelt ikke Javascript sproget. Robotterne læser bedst ren (X)HTML, og det er som om de bare springer over, hvor der står noget med <span style="font-family: Courier New;">&lt;script&#8230;&gt;</span>.</p>
<p>En anden stor, og voksende, gruppe er <em>brugere på mobiltelefoner</em>! At designe en webapplikation til mobiltelefoner er et større kapitel, og Javascript er langt fra den eneste ting man skal tage højde for her &#8211; Men mobile browsere der understøtter Javascripts er pt., efter min bedste overbevisning, stadig i undertal! iPhonen er (officielt) ikke kommet til Danmark endnu, men når det sker vil jeg tro, at man vil kunne måle et stigning i søgninger/besøg med mobiltelefonerne på de danske sider. Der findes selvfølgelig <a title="Firefox til mobilen" href="http://www.simon-jensen.net/firefox-til-din-mobiltelefon.html">mobile</a> <a title="Opera Mini" href="http://www.simon-jensen.net/opera-mini-4.0.html">løsninger</a> derude, men det skal ikke være nødvendigt at installere en 3. parts browser, for at kunne surfe (ordentligt) på nettet vel?</p>
<p>Specielt er du i farvezonen, hvis du bruger Javascript til navigation på din hjemmeside! Tags som <span style="font-family: Courier New;">onclick</span>, <span style="font-family: Courier New;">window.localtion.href</span>, bør ikke være <em>nødvendige</em> at kunne afvikle, for at navigere din side. I henhold til mobiltelefonen, bør man huske på, at langt de fleste ikke har den samme måde at navigere på &#8211; musen mangler! Jo, nogle har touchscreen, og nogle kan til dels bruge en pen &#8211; men <span style="font-family: Courier New;">mouseover</span>, og ligeledes CSS tagget <span style="font-family: Courier New;">:hover</span>, bør du ikke regne med virker specielt godt på en mobiltelefon!</p>
<h3>Test hvad der virker uden Javascript</h3>
<p>Den letteste måde at teste din sides funktionalitet, som den vil være på en mobiltelefon er ganske simpelt, at slå Javascript fra i din browser &#8211; noget langt de fleste browser har mulighed for. Den funktionalitet der efterfølgende kan afvikles, vil højst sandsynligt være den samme som du vil kunne bruge på en mobiltelefon.</p>
<p>For at se hvad søgemaskinernes søgerobotter møder og kan, på din side, findes den tekstbaserede browser Lynx. Lynx findes både til <a title="Lynx til Windows." href="http://www.vordweb.co.uk/standards/download_lynx.htm" target="_blank">Windows</a>, <a title="Lynx til Mac." href="http://www.apple.com/downloads/macosx/unix_open_source/lynxtextwebbrowser.html" target="_blank">Mac</a> og <a title="Mere om Lynx på Wikipedia." href="http://en.wikipedia.org/wiki/Lynx_%28web_browser%29#External_links" target="_blank">Linux</a>, og afvikles i en kommandoprompt som vist på billedet herunder.</p>
<p><a title="www.simon-jensen.net set gennem Lynx." href="http://www.simon-jensen.net/admin/uploads/image/hijax/lynx.png"><img style="width: 469px; height: 244px;" title="www.simon-jensen.net set gennem Lynx." src="http://www.simon-jensen.net/admin/uploads/image/hijax/lynx.png" alt="www.simon-jensen.net set gennem Lynx." /></a></p>
<p>Man skal lige vende sig til at navigere i &#8220;browseren&#8221;, men når det er på plads, kan du få et ret godt billede af, hvordan en søgerobot kan &#8220;benytte&#8221; din side. Besøger du min side, vil du sikkert ligge mærke til at det ikke er muligt at søge via min <a title="Læs posten &quot;Live Search med Prototype JS og PHP&quot;" href="http://www.simon-jensen.net/live-search-med-prototype-js-og-php.html">Live Search</a>, da denne udelukkende aktiveres via Javascript.</p>
<h3>Kernen i Hijax: Graceful degradation</h3>
<p>Kernen til at undgå at udelukke en håndfuld besøgende i at kunne bruge dit site ordenligt, skal findes i teknikken <em>Graceful degradation &#8211; </em>som også er kernen i Hijax.</p>
<p>Graceful degradation er en meget logisk en simpel tanke &#8211; kort fortalt, levere du et alternativ, til de brugere som ikke har mulighed for at afvikle Javascript. Den letteste måde at forklare graceful degradataion på, er gennem et lille eksempel. Du bruger faktisk browserens mulighed for at checke understøttelsen af Javascript. Hvis browseren ikke understøtter Javascript &#8220;falder den tilbage&#8221; til en standard funktionalitet.</p>
<p>Kodestumpen nedenfor vil udføre Javascript-funktionen <span style="font-family: Courier New;">popUp(url)</span>, som tænkt vil åbne www.simon-jensen.net i et popup-vindue &#8211; hvis ellers Javascript er understøttet. Hvis Javascript <em>ikke</em> er understøttet, vil brugeren på normal vis blive videresendt til adressen.</p>
<pre>&lt;a href="http://www.simon-jensen.net/" onclick="popUp(http://www.simon-jensen.net); return false;"&gt;Simon Jensen&lt;/a&gt;</pre>
<h3>Hijax i en nødeskald</h3>
<p>Tankegangen i Hijax er, på samme måde som Gracefull degradation, meget logisk og simpel.</p>
<p>Som Jeremy beskriver Hijax, går dette i praksis ud på, at ud først udvikler en &#8220;normal/klassisk&#8221; version af din webapplikation. Med normal menes der, en version som ikke udelukker søgemaskinerobotter og andet godtfolk, som ikke kan afvikle Javascript. Herefter kan du &#8220;pakke&#8221; dine formulare, og evt. andet, ind i Javascript-funktionalitet &#8211; Med andre ord &#8220;<strong><em>hijacke dine formulare med AJAX</em></strong>&#8220;.</p>
<p>Denne &#8220;overtagelse&#8221; skal selvfølgelig gøres efter Gracelfull degradation, således at vi ikke bare ender med en Javascript baseret løsning, men biholder den klassiske version, så alle kan være med.</p>
<h3>Hijax i praksis</h3>
<p>Jeg har endnu ikke haft leget med Hijax i praksis, men forventer at komme igang med det snarrest &#8230; herefter vil der, som skrevet i starten, komme en lille opfølger på teknikken. Nu skulle de vigtigste pointer være slået fast, og jeg er pændt sikker på at jég, for eftertiden, vil tænke mere over, at levere alternativer til Javascript-baseret funktionaliter.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.simon-jensen.net/hijax.html/feed</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
	</channel>
</rss>

