<?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>lillbra.se &#187; Utveckling</title>
	<atom:link href="http://lillbra.se/category/utveckling/feed/" rel="self" type="application/rss+xml" />
	<link>http://lillbra.se</link>
	<description>webbutveckling, webbtrender och länktips</description>
	<lastBuildDate>Sun, 26 Feb 2012 19:27:51 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.0.3</generator>
		<item>
		<title>Idag är det CSS Naked Day 2011</title>
		<link>http://lillbra.se/2011/04/idag-ar-det-css-naked-day-2011/</link>
		<comments>http://lillbra.se/2011/04/idag-ar-det-css-naked-day-2011/#comments</comments>
		<pubDate>Sat, 09 Apr 2011 10:12:12 +0000</pubDate>
		<dc:creator>Jonatan Larsson</dc:creator>
				<category><![CDATA[Tillgänglighet]]></category>
		<category><![CDATA[Utveckling]]></category>
		<category><![CDATA[css naked day]]></category>

		<guid isPermaLink="false">http://lillbra.se/?p=646</guid>
		<description><![CDATA[Idag den 9:e april är det den årliga CSS Naked Day, som uppmärksammar nyttan och betydelsen av strukturerad markup, semantisk html och webbstandarder. Så för 5:e året i rad så tar jag bort css:en från denna blogg för att visa min &#60;body> &#8211; gör det du också! ps. Nikke Lindqvist har en lista på andra [...]]]></description>
			<content:encoded><![CDATA[<p>Idag den 9:e april är det den årliga <a href="http://naked.dustindiaz.com/">CSS Naked Day</a>, som uppmärksammar nyttan och betydelsen av strukturerad markup, semantisk html och webbstandarder. Så <a href="http://lillbra.se/?s=css+naked+day">för 5:e året i rad</a> så tar jag bort css:en från denna blogg för att visa min &lt;body> &#8211; gör det du också! <img src='http://lillbra.se/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </p>
<p>ps. Nikke Lindqvist har en lista på andra <a href="http://www.lindqvist.com/nu-ar-det-dags-att-fira-css-naked-day-igen/">svenska bloggar som firar nakenheten</a> idag.</p>
]]></content:encoded>
			<wfw:commentRss>http://lillbra.se/2011/04/idag-ar-det-css-naked-day-2011/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Har din sajt en app-ikon för iPhone och Android?</title>
		<link>http://lillbra.se/2011/03/har-din-sajt-en-app-ikon-for-iphone-och-android/</link>
		<comments>http://lillbra.se/2011/03/har-din-sajt-en-app-ikon-for-iphone-och-android/#comments</comments>
		<pubDate>Fri, 04 Mar 2011 08:49:09 +0000</pubDate>
		<dc:creator>Jonatan Larsson</dc:creator>
				<category><![CDATA[Mobilt]]></category>
		<category><![CDATA[Utveckling]]></category>
		<category><![CDATA[android]]></category>
		<category><![CDATA[app]]></category>
		<category><![CDATA[favicon]]></category>
		<category><![CDATA[ikoner]]></category>
		<category><![CDATA[ipad]]></category>
		<category><![CDATA[iphone]]></category>

		<guid isPermaLink="false">http://lillbra.se/?p=601</guid>
		<description><![CDATA[App-ikoner är de nya fav-ikonerna! Om en smartphone-användare gillar din sajt så kan han/hon välja att bokmärka den genom &#8220;Add to Home Screen&#8221;, eller &#8220;Lägg till på hemskärmen&#8221;. Då skapas ett bokmärke på hemskärmen, som ser ut som en vanligt app, med tillhörande app-ikon. Om din sajt inte har någon app-ikon så skapar telefonen en [...]]]></description>
			<content:encoded><![CDATA[<p><img src="/images/homescreen.png" alt="Lägg till på hemskärmen" style="float:right; margin: 5px 0 5px 10px;" /></p>
<p>App-ikoner är de <em>nya fav-ikonerna</em>! Om en smartphone-användare gillar din sajt så kan han/hon välja att bokmärka den genom <em>&#8220;Add to Home Screen&#8221;</em>, eller <em>&#8220;Lägg till på hemskärmen&#8221;</em>.<br />
Då skapas ett bokmärke på hemskärmen, som ser ut som en vanligt app, med tillhörande app-ikon. Om din sajt inte har någon app-ikon så skapar telefonen en liten skärmdump som används istället &#8211; inte särskilt snyggt. Men detta är snabbt åtgärdat!</p>
<p>För att din sajt ska få en app-ikon i iPhone eller iPad skapar du en bild som du sedan hänvisar till i din html-kod. I head-taggen lägger du in en link med rel-attributet <strong>apple-touch-icon</strong>:  </p>
<p><code>&lt;link rel="apple-touch-icon" href="/images/touch-icon.png" /></code></p>
<p>Eftersom de olika varianterna av iPhone och iPad har olika upplösning måste man skapa ikoner med olika storlekar. Bilderna ska ha följande mått, enligt <a href="http://developer.apple.com/library/ios/#documentation/userexperience/conceptual/mobilehig/IconsImages/IconsImages.html">Apples egna dokumentation</a>:</p>
<ul>
<li>iPhone 3GS: 57&#215;57 pixlar</li>
<li>iPhone 4: 114&#215;114 pixlar</li>
<li>iPad: 58&#215;58 pixlar</li>
</ul>
<p>Vad jag erfar så räcker det dock med de två översta &#8211; iPaden använder verkar använda den största. Måtten anges i ett sizes-attribut. Det fullständiga exemplet ser alltså ut så här:</p>
<p><code>&lt;link rel="apple-touch-icon" href="/images/touch-icon-small.png" /><br/>&lt;link rel="apple-touch-icon" sizes="114x114" href="/images/touch-icon-big.png" /></code></p>
<p>Apple lägger automatiskt till glans och rundade hörn på din ikon. Här ser du ett exempel på hur en ikon ser ut i original, jämfört med hur den visas på användarens hemskärm: </p>
<p><img src="/images/app-ikon.png" alt="Ikonen i original och på Home Screen" /></p>
<p>Om du inte vill ha glans och runda hörn på din ikon kan du lägga till ordet precomposed i rel-attributet. Då visas ikonen i sitt originalutseende (via <a href="http://24ways.org/2010/life-beyond-media-queries">Sarah Parmenter</a>): </p>
<p><code>&lt;link rel="apple-touch-icon-precomposed" href="/images/touch-icon.png" /></code></p>
<p>Men, kanske någon undrar, hur gör man då för Android-mobiler? Svaret är enkelt: Man kan göra likadant! <a href="http://philwilson.org/blog/2010/01/adding-a-bookmark-to-an-android-home-screen">Android stöder nämligen också apple-touch-icon-precomposed</a>, så om du använder det kommer din ikon alltså användas för majoriteten av smartphoneanvändare. </p>
<p>Vill du veta ännu mer om att skapa ikoner för iOS? Läs vidare på: <a href="http://webdesignledger.com/tips/how-to-design-app-icons-for-iphone-and-ipad">How to Design App Icons for iPhone and iPad</a>.</p>
<p>ps. För att uppmärksamma användaren om att de kan bokmärka/lägga till din sajt på hemskärmen kan jag tipsa om <a href="http://cubiq.org/add-to-home-screen">add2home.js</a> (via <a href="http://twitter.com/#!/emilstenstrom">Emil Stenström</a>). Det är ett litet script som öppnar upp ett meddelande i närheten till &#8220;Add to Home Screen&#8221;-knappen för att upplysa användaren hur de bokmärker din sajt. Snyggt!</p>
]]></content:encoded>
			<wfw:commentRss>http://lillbra.se/2011/03/har-din-sajt-en-app-ikon-for-iphone-och-android/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
		<item>
		<title>Att skapa och lägga till html-element med jQuery</title>
		<link>http://lillbra.se/2011/02/att-skapa-och-lagga-till-html-element-med-jquery/</link>
		<comments>http://lillbra.se/2011/02/att-skapa-och-lagga-till-html-element-med-jquery/#comments</comments>
		<pubDate>Fri, 25 Feb 2011 08:07:06 +0000</pubDate>
		<dc:creator>Jonatan Larsson</dc:creator>
				<category><![CDATA[Utveckling]]></category>
		<category><![CDATA[html]]></category>
		<category><![CDATA[javascript]]></category>
		<category><![CDATA[jquery]]></category>

		<guid isPermaLink="false">http://lillbra.se/?p=571</guid>
		<description><![CDATA[Det finns många olika sätt att skapa nya html-element på en sida med hjälp av jQuery. För att, till exempel, skapa en länk kan du skriva så här: link = $('&#60;a href="http://lillbra.se">Min blogg&#60;/a>');$('body').append(link); Eller så kan du infoga en html-sträng direkt, så här: $('body').append('&#60;a href="http://lillbra.se">Min blogg&#60;/a>'); Men om elementet man skapar ska ha många attribut, [...]]]></description>
			<content:encoded><![CDATA[<p>Det finns många olika sätt att skapa nya html-element på en sida med hjälp av jQuery. För att, till exempel, skapa en länk kan du skriva så här: </p>
<p><code>link = $('&lt;a href="http://lillbra.se">Min blogg&lt;/a>');<br/>$('body').append(link);</code></p>
<p>Eller så kan du infoga en html-sträng direkt, så här: </p>
<p><code>$('body').append('&lt;a href="http://lillbra.se">Min blogg&lt;/a>');</code></p>
<p>Men om elementet man skapar ska ha många attribut, blir det ofta kladdigt i koden med långa strängar. Så med jQuery kan du skicka med attribut, och även fästa events, till elementet genom en hashmap direkt när du skapar det: </p>
<p><code>var link = $('&lt;a />', {<br/>      className: 'close',<br/>      href: '#',<br/>      text: "Hide more info",<br/>      click: function(e){<br/>        e.preventDefault();<br/>        $(this).parent().slideToggle();<br/>      }<br/>});</code></p>
<p>Snyggt och överskådligt! Se fler exempel på detta här: <a href="http://thenerdary.net/articles/entry/beautiful_element_creation_with_jquery">Beatiful Element Creation With jQuery</a> (via <a href="http://mondaybynoon.com/2011/01/18/beautiful-element-creation-with-jquery/">Jonathan Cristopher</a>). </p>
<p>Även detta sätt kan dock bli rörigt om man ska bygga en större html-struktur, med nästlade element.<br />
Då kan man använda templates. Tanken med templates att du skapar en mall, i form av en html-struktur, som du sedan fyller med data, t.ex. ett eller flera json-objekt. jQuery har sitt <a href="http://api.jquery.com/category/plugins/templates/">eget template-plugin</a>, men det finns även andra som <a href="https://github.com/janl/mustache.js">Mustache</a> och <a href="http://documentcloud.github.com/underscore/">Underscore</a>.<br />
Först skapar man alltså mallen &#8211; den kan ligga inline som en script-tagg i html-koden:</p>
<p><code>&lt;script id="vcard-template" type="text/x-jquery-tmpl"><br/>    &lt;div class="vcard"><br/>        &lt;a class="fn url" href="${ website }">${ name }&lt;/a><br/>        &lt;span class="org">${ company }&lt;/span><br/>    &lt;/div><br/>&lt;/script></code></p>
<p>Sedan hämtar man ut mallen och fyller den med sitt data, för att sedan infoga det på sidan:</p>
<p><code>author = { name : 'Jonatan Larsson',<br/>           website: 'http://lillbra.se',<br/>           company: 'Valtech' };<br/>$('#vcard-template').tmpl(author).appendTo('#contact');</code></p>
<p>Se fler <a href="http://api.jquery.com/category/plugins/templates/">exempel på hur du använder jQuerys templates här</a>. </p>
<p>När man infogar element på sidan bör man tänka på att u<a href="http://www.artzstudio.com/2009/04/jquery-performance-rules/#limit-dom-manipulation">ppdatera DOM-trädet så få gånger som möjligt</a>. Om man t.ex. skapar en lista så ska man undvika att infoga ett li-element åt gången: </p>
<p><code>list = $('#my-list');<br/>for (var i=0; i&lt;items.length; i++){<br/>      list.append('&lt;li>' + items[i] + '&lt;/li>');<br/>}</code></p>
<p>Istället kan man skapa html för alla li-element och sedan injecta dom en enda gång:</p>
<p><code>htmlItems = '';<br/>for (var i=0; i&lt;items.length; i++){<br/>      htmlItems += '&lt;li>' + items[i] + '&lt;/li>');<br/>}<br/>$('#my-list').html(htmlItems);</code></p>
<p>Angående prestanda kan det ibland också vara bättre att skapa eller infoga element med native javascript, till exempel använda <a href="http://www.novogeek.com/post/2010/04/11/The-curious-case-of-Stop-running-script-error-jQuery.aspx">.innerHTML() istället för .html()</a>, eller <a href="http://stackoverflow.com/questions/327047/what-is-the-most-efficient-way-to-create-html-elements-using-jquery">.createElement() istället för strängar</a>. Den nyfikne kan även kolla in <a href=" http://jsperf.com/dom-vs-innerhtml-based-templating/53">prestandamätningar mellan olika template-plugins här</a>. Lycka till!</p>
]]></content:encoded>
			<wfw:commentRss>http://lillbra.se/2011/02/att-skapa-och-lagga-till-html-element-med-jquery/feed/</wfw:commentRss>
		<slash:comments>8</slash:comments>
		</item>
		<item>
		<title>Så tillåter du HTML5-element i TinyMCE</title>
		<link>http://lillbra.se/2011/02/html5-och-tinymce/</link>
		<comments>http://lillbra.se/2011/02/html5-och-tinymce/#comments</comments>
		<pubDate>Wed, 16 Feb 2011 08:16:36 +0000</pubDate>
		<dc:creator>Jonatan Larsson</dc:creator>
				<category><![CDATA[Utveckling]]></category>
		<category><![CDATA[episerver]]></category>
		<category><![CDATA[html5]]></category>
		<category><![CDATA[tinymce]]></category>
		<category><![CDATA[wordpress]]></category>

		<guid isPermaLink="false">http://lillbra.se/?p=543</guid>
		<description><![CDATA[Den populära WSIWYG-editorn TinyMCE är default-inställd på att rensa html-koden från ogiltiga html-taggar och -attribut (cleanup-metoden). Och i default-inställningarna på vilka html-element som är tillåtna finns inga av nyheterna i HTML5. Så när html-kod infogas eller modifieras i editorn kommer TinyMCE att ta bort nya HTML5-element och -attribut. Men detta kan du ändra på. Det [...]]]></description>
			<content:encoded><![CDATA[<p>Den populära WSIWYG-editorn <a href="http://tinymce.moxiecode.com/">TinyMCE</a> är default-inställd på att rensa html-koden från ogiltiga html-taggar och -attribut (<a href="http://tinymce.moxiecode.com/wiki.php/Configuration:cleanup">cleanup-metoden</a>). Och i <a href="http://tinymce.moxiecode.com/wiki.php/Configuration:valid_elements">default-inställningarna på vilka html-element som är tillåtna</a> finns inga av nyheterna i HTML5. Så när html-kod infogas eller modifieras i editorn kommer TinyMCE att ta bort nya HTML5-element och -attribut. </p>
<p>Men detta kan du ändra på. Det enklaste och bästa sättet att tillåta andra element är att definiera <em>extended_valid_elements</em> i TinyMCE-inställningarna. För att, till exempel, tillåta &lt;time>-taggen med ett datetime- och data-attribut skriver du följande:</p>
<p><code>tinyMCE.init({<br/>...<br/>extended_valid_elements : "time[datetime|data-is-start]"<br/>});</code></p>
<h2>TinyMCE i EPiServer</h2>
<p>Om du utvecklar för <a href="http://www.episerver.com/">EPiServer</a> måste du göra dessa TinyMCE-inställningar genom EPiServer. Det gör du genom att skapa en klass med TinyMCEPluginNonVisual-attributet:</p>
<p><code>using EPiServer.Editor.TinyMCE;<br />
namespace Customer.Web.Plugins.TinyMCE<br/>{<br/>    [TinyMCEPluginNonVisual(AlwaysEnabled = true, PlugInName = "ExtendedValidElements", EditorInitConfigurationOptions = "{ extended_valid_elements: 'time[datetime|data-is-start]' }")]<br/>    public class ExtendedValidElements<br/>    {}<br/>}</code></p>
<p>Och i din episerver.config-fil lägger du till (via <a href="http://www.frederikvig.com/2010/10/how-to-add-support-for-iframes-and-other-elements-to-tinymce-in-episerver-cms/">Frederik Vig</a>): </p>
<p><code>...<br/>&lt;tinyMCE mergedConfigurationProperties="valid_elements, extended_valid_elements, invalid_elements, valid_child_elements" /><br/>&lt;/episerver></code></p>
<h2>TinyMCE i WordPress</h2>
<p>Om du använder WordPress så gör du dina TinyMCE-inställningar i en egen funktion som du lägger till som ett filter med namnet <em>tiny_mce_before_init</em>. Detaljer om hur du gör detta hittar du här: <a href="http://hybridgarden.com/blog/misc/adding-html5-capability-to-wordpress/">Adding html5 capability to WordPress</a>.<br />
Lycka till!</p>
]]></content:encoded>
			<wfw:commentRss>http://lillbra.se/2011/02/html5-och-tinymce/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
		<item>
		<title>Prestandaoptimering inom css</title>
		<link>http://lillbra.se/2011/02/prestandaoptimering-inom-css/</link>
		<comments>http://lillbra.se/2011/02/prestandaoptimering-inom-css/#comments</comments>
		<pubDate>Thu, 10 Feb 2011 08:08:03 +0000</pubDate>
		<dc:creator>Jonatan Larsson</dc:creator>
				<category><![CDATA[Utveckling]]></category>

		<guid isPermaLink="false">http://lillbra.se/?p=527</guid>
		<description><![CDATA[Som frontend-utvecklare hittar man ofta tips och bloggposter om hur man bör optimera javascript för få bättre prestanda. Men att känna till hur man kan förbättra css-selektorer och -regler kan också vara bra. För att avgöra vad som är prestandaslukande css, så är det ett par grundläggande saker om webbläsare man ska veta: Utseendet för [...]]]></description>
			<content:encoded><![CDATA[<p>Som frontend-utvecklare hittar man ofta tips och bloggposter om hur man bör optimera javascript för få bättre prestanda. Men att känna till hur man kan förbättra css-selektorer och -regler kan också vara bra.<br />
För att avgöra vad som är prestandaslukande css, så är det ett par grundläggande saker om webbläsare man ska veta:</p>
<p><strong>Utseendet för ett element bestäms då det skapas</strong><br />
Webbläsaren läser och ritar ut ett element i taget, med start uppifrån och ned i html-dokumentet. För varje element som ritas ut, avgör webbläsaren om den dessutom måste rita om tidigare element.<br />
Se en video på hur <a href="http://www.youtube.com/watch?v=ZTnIxIA5KGw">en sidrendering i Firefox ser ut i slow motion här</a> (via <a href="http://snook.ca/archives/html_and_css/css-parent-selectors">Snook</a>).</p>
<p><strong>Css-selektorer evalueras från höger till vänster</strong><br />
Nyckeln i en css-selektor är det som står längst till höger. Webbläsaren börjar tolka selektorn från höger och fortsätter sedan tills den kan avgöra om utseendet ska appliceras på aktuellt element. Ju fler noder måste evalueras för att se om regeln stämmer för elementet, desto mer jobb är det för webbläsaren.  </p>
<p>Med detta som bakgrund ger Google Page Speed följande råd till <a href="http://code.google.com/intl/sv-SE/speed/page-speed/docs/rendering.html#UseEfficientCSSSelectors">hur du skriver effektiva css-selektorer</a>:</p>
<p><strong>Undvik universalselektorer</strong><br />
Nycklar som matchar alla element är självklart krävande. Använd ej: <code>body * {...} </code></p>
<p><strong>Gör regeln så specifik som möjligt</strong><br />
Id:n är mest effektiva, följt av klasser och sist taggnamn och universal-selektorer. Använd t.ex. klasser och id:n som nyckel istället för taggnamn. Jämför följande: <code>#comment p {..}<br />
#comment .text {}</code></p>
<p><strong>Undvik redundanta selektorer</strong><br />
Låt klasser och id:n tala för sig själva, skriv inte kombinationer när de inte behövs, som t.ex.: <code>div#comment<br />
p.text</code></p>
<p><strong>Undvik descendant selektorer</strong><br />
Håll selektorerna korta, och ha inte med förälderelement som gäller för alla element, t.ex.: <code>body ul li a {...}</code></p>
<p><strong>Undvik :hover pseudoe-selektorn för element som inte är länkar i IE</strong><br />
Kan orsaka problem i Internet Explorer 7 &#038; 8, överväg att använda javascript istället. </p>
<p><strong>Undvik css-expressions</strong><br />
Stöds bara av Internet Explorer och är deprecated. Använd media-queries eller javascript istället. </p>
<p>Hur stor effekt det ger att följa ovanstående råd är såklart olika från fall till fall. Men speciellt mobiler och läsplattor är inte så kraftfulla och där kan optimering ge märkbar effekt. Tomas Fuchs har kollat närmare på<a href="http://mir.aculo.us/2010/06/04/making-an-ipad-html5-app-making-it-really-fast/"> vilken sorts css som slöar ned renderingen på iPaden</a>, och främst är det nyheterna inom css3 som orsakar problem. Enligt honom bör vara försiktig med att använda följande:</p>
<p><strong>text-shadow och box-shadow</strong><br />
Krävande och slöar ned sidan kraftigt.</p>
<p><strong>-webkit-gradient</strong><br />
Webbläsaren skapar en bitmap av gradienten vilket inte är optimalt. Istället kan man använda canvas till att måla stora gradienter.</p>
<p><strong>-webkit-transform </strong><br />
Orsakar hårdvaruacceleration, och är buggigt.</p>
<p><strong>opacity</strong><br />
Genomskinligheten kan tydligen störa hårdvaruaccelerationen och på så sätt orsaka långsam sidladdning.</p>
<p>Till sist: Prestandaoptimeringar i all ära, men kom ihåg att inte offra semantiken för att skriva snabbare selektorer. Att sätta id:n på alla element är alltså ett no-no &#8211; skapa en ren semantisk html i första hand <img src='http://lillbra.se/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' />  Och för dig som vill läsa mer kan jag rekommendera följande artiklar:</p>
<ul>
<li><a href="http://css-tricks.com/efficiently-rendering-css/">Efficiently Rendering CSS &#8211; CSS-Tricks</a> (via <a href="http://madr.se/vart-att-uppmarksamma-vecka-4">@madr</a>)</li>
<li><a href="https://developer.mozilla.org/en/Writing_Efficient_CSS">Writing Efficient CSS for use in the Mozilla UI &#8211; MDN</a> </li>
<li><a href="http://eriwen.com/css/use-the-table-layout-css-property-to-speed-up-table-rendering/">Use the table-layout CSS property to speed up table rendering &#8211; Eric Wendelin</a> (via <a href="http://madr.se/vart-att-uppmarksamma-vecka-5">@madr</a>)</li>
</ul>
<p>Relaterade artiklar på lillbra.se:  </p>
<ul>
<li><a href="http://lillbra.se/2006/10/att-tanka-pa-nar-du-knappar-css/">Att tänka på när du knappar css</a></li>
<li><a href="http://lillbra.se/2008/11/4-css-tips-jag-inte-foljer/">4 css-tips jag INTE följer</a></li>
</ul>
]]></content:encoded>
			<wfw:commentRss>http://lillbra.se/2011/02/prestandaoptimering-inom-css/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Så bestämmer du bild för din sajt vid Facebook-delning</title>
		<link>http://lillbra.se/2011/02/sa-bestammer-du-bild-for-din-sajt-vid-facebook-delning/</link>
		<comments>http://lillbra.se/2011/02/sa-bestammer-du-bild-for-din-sajt-vid-facebook-delning/#comments</comments>
		<pubDate>Wed, 02 Feb 2011 07:30:01 +0000</pubDate>
		<dc:creator>Jonatan Larsson</dc:creator>
				<category><![CDATA[Utveckling]]></category>
		<category><![CDATA[bild]]></category>
		<category><![CDATA[facebook]]></category>
		<category><![CDATA[favicon]]></category>
		<category><![CDATA[html]]></category>
		<category><![CDATA[metadata]]></category>
		<category><![CDATA[rdf]]></category>

		<guid isPermaLink="false">http://lillbra.se/?p=504</guid>
		<description><![CDATA[När man delar en länk på Facebook så visas en tumnagel eller ikon för url:en. Facebook letar efter en passande bild på den inlänkade sajten och infogar den, vilket ibland kan tyckas aningen slumpmässigt. Men du kan själv styra vilken bild som visas. Facebook har skapat OpenGraph, ett metadata-protokoll för att beskriva sidor och relationer [...]]]></description>
			<content:encoded><![CDATA[<p>När man delar en länk på Facebook så visas en tumnagel eller ikon för url:en. Facebook letar efter en passande bild på den inlänkade sajten och infogar den, vilket ibland kan tyckas aningen slumpmässigt. Men du kan själv styra vilken bild som visas.</p>
<p><img src="/images/facebook-share.png" alt="Exempel på tumnagelbild vid delning på Facebook" /></p>
<p>Facebook har skapat <a href="http://ogp.me/">OpenGraph</a>, ett metadata-protokoll för att beskriva sidor och relationer på webben. Så för att ange vilken bild Facebook ska använda lägger du in följande meta-tagg i din head-tagg:</p>
<p><code>&lt;meta property="og:image" content="http://lillbra.se/images/facebook-thumbnail.png"/></code></p>
<p>Du måste dessutom specificera namespace för protokollet på detta sätt:</p>
<p><code>&lt;html xmlns:og="http://ogp.me/ns#"></code></p>
<p>Bilden du använder ska vara minst 50&#215;50 pixlar stor och ha en ratio på högst 3:1. Filformat som stöds är png, jpeg och gif. </p>
<p>OpenGraph-protokollet har utöver og:image, tre andra egenskaper som är obligatoriska att ha på sidan: title, <a href="http://developers.facebook.com/docs/opengraph#types">type</a> och url. Så det fullständiga exemplet ser ut så här: </p>
<p><code>&lt;html xmlns:og="http://ogp.me/ns#"><br/>&lt;head><br/>&lt;meta property="og:title" content="Lillbra.se"/><br/>&lt;meta property="og:type" content="blog"/><br/>&lt;meta property="og:url" content="http://lillbra.se"/><br/>&lt;meta property="og:image" content="http://lillbra.se/images/facebook-thumbnail.png"/></code></p>
<p>Läs <a href="http://developers.facebook.com/docs/opengraph">mer om OpenGraph och på vilka sätt Facebook använder det här</a>.</p>
<h2>OpenGraph och HTML5-validering</h2>
<p>Om du använder HTML5 som doctype (och det gör du väl!?) kommer ovanstående exempel att <strong>orsaka valideringsfel</strong>. Jag har hittat tre metoder att hantera detta problem: </p>
<p>Antingen kan du se till att endast skriva ut meta-taggarna för Facebook, genom att kontrollera user-agent-strängen. För alla andra besökare serveras alltså valid html utan OpenGraph-element. Ett <a href="http://earthpeople.se/labs/2010/09/html5-validation-with-facebook-opengraph/">exempel på hur du gör detta hittar du här</a>. </p>
<p>Ett annat alternativ är att använda <a href="http://stackoverflow.com/questions/1138460/how-does-facebook-sharer-select-images">det gamla sättet att peka ut bilden med en link-tagg</a> istället för en meta-tagg. Så här:</p>
<p><code>&lt;link rel="image_src" href="/images/facebook-thumbnail.png" /></code></p>
<p>Detta sätt rekommenderades innan OpenGraph fanns, men fungerar fortfarande. Hur länge Facebook stöder detta är dock oklart.</p>
<p>Det tredje och sista alternativet är att använda <a href="http://www.w3.org/TR/rdfa-in-html/">HTML+RDFa</a> &#8211;  en standard för att använda RDFa (där du kan definiera xml-namespaces) tillsammans med HTML5. Då skriver du så här (via <a href="http://www.semanticoverflow.com/questions/2225/htmlrdfa-1-1-draft">Semantic Overflow 1</a> &#038; <a href="http://www.semanticoverflow.com/questions/1187/can-i-use-the-html5-doctype-with-rdfa">2</a>):</p>
<p><code>&lt;!DOCTYPE html><br/>&lt;html version="HTML+RDFa 1.1" xmlns:og="http://ogp.me/ns#"><br/>&lt;head><br/>&lt;meta property="og:image" content="http://lillbra.se/images/facebook-thumbnail.png"/></code></p>
<p>HTML+RDFa är dock en working draft och W3Cs validator stöder inte HTML+RDFa, och därför kommer du inte kunna validera din kod med den.</p>
<h2>Annat att tänka på</h2>
<p>Många rapporterar problem med att Facebook inte visar rätt bild, både när man använt OpenGraph och det gamla sättet. Själv har jag inte stött på några problem, bara man följer ovan beskrivna regler. Och <a href="http://developers.facebook.com/tools/lint/">Facebook har en egen länk-inspektor</a> där du kan ange en url och få ett resultat på vilken metadata Facebook kan hämta för den sidan. Lycka till!</p>
<p>ps. Om du använder WordPress hittar du en <a href="http://learnthat.com/2010/12/how-to-add-facebook-opengraph-to-your-wordpress-blog/">enkel steg-för-steg guide till hur du implementerar OpenGraph här</a>. </p>
]]></content:encoded>
			<wfw:commentRss>http://lillbra.se/2011/02/sa-bestammer-du-bild-for-din-sajt-vid-facebook-delning/feed/</wfw:commentRss>
		<slash:comments>5</slash:comments>
		</item>
		<item>
		<title>Kom igång med WAI-ARIA</title>
		<link>http://lillbra.se/2010/10/kom-igang-med-wai-aria/</link>
		<comments>http://lillbra.se/2010/10/kom-igang-med-wai-aria/#comments</comments>
		<pubDate>Mon, 04 Oct 2010 08:04:04 +0000</pubDate>
		<dc:creator>Jonatan Larsson</dc:creator>
				<category><![CDATA[Tillgänglighet]]></category>
		<category><![CDATA[Utveckling]]></category>
		<category><![CDATA[aria]]></category>
		<category><![CDATA[html]]></category>
		<category><![CDATA[html5]]></category>
		<category><![CDATA[tillgänglighet]]></category>
		<category><![CDATA[wai-aria]]></category>

		<guid isPermaLink="false">http://lillbra.se/?p=451</guid>
		<description><![CDATA[WAI-ARIA (Accessible Rich Internet Applications) är en standard från W3C för ökad tillgänglighet på javascript-tunga webbplatser. Den beskriver hur man ska hantera innehåll i html som är dynamiskt och ändras, till exempel genom AJAX. Standarden har två huvuddelar: roller (roles) och tillstånd &#038; egenskaper (states &#038; properties). Roller Roller kan användas för att beskriva vilken [...]]]></description>
			<content:encoded><![CDATA[<p><a href="http://www.w3.org/TR/2010/WD-wai-aria-20100916/">WAI-ARIA (Accessible Rich Internet Applications)</a> är en standard från W3C för ökad tillgänglighet på javascript-tunga webbplatser. Den beskriver hur man ska hantera innehåll i html som är dynamiskt och ändras, till exempel genom AJAX.<br />
Standarden har två huvuddelar: <em>roller</em> (roles) och <em>tillstånd &#038; egenskaper</em> (states &#038; properties). </p>
<h3>Roller</h3>
<p>Roller kan användas för att beskriva vilken roll (duh!) en viss del eller visst element har på sidan eller i applikationen. Du använder roller genom att lägga till attributet role i din html-kod, t.ex:</p>
<p><code>&lt;div role="banner"&gt;</code></p>
<p>Det finns <a href="http://www.w3.org/TR/2010/WD-wai-aria-20100916/roles#role_definitions">61 stycken roller</a>, mer eller mindre självförklarande, som t.ex. alertdialog, tabpanel, progressbar.<br />
De mest övergripande rollerna kallas <em>landmarks</em> och kan användas av skärmläsare för att navigera runt till huvuddelarna av dokumentet, d.v.s. samma användning som en &#8220;<a href="http://juicystudio.com/article/skip-links.php" title="Skip Links - Juicy Studios">Hoppa till innehållet&#8221;-länk</a>. Landmarks-rollerna är följande: </p>
<ul>
<li><strong>application</strong> &#8211; del av sidan som anses vara mer applikation än dokument</li>
<li><strong>banner</strong> &#8211; t.ex. sidhuvud som beskriver webbplatsen</li>
<li><strong>complementary</strong> &#8211; stödmaterial till huvudinnehållet som även är meningfullt om det skulle vara fristående</li>
<li><strong>contentinfo</strong> &#8211; metadata om huvudinformationen</li>
<li><strong>main</strong> &#8211; huvudinnehållet på sidan</li>
<li><strong>navigation</strong> &#8211; navigationsmeny </li>
<li><strong>search</strong> &#8211; sökfunktion</li>
</ul>
<p>Som synes har några av rollerna stora likheter med betydelsen av vissa html5-element. Steve Faulkner har en bra <a href="http://www.paciellogroup.com/blog/?p=106">jämförelsetabell mellan landmark roles och html-taggar</a> där du kan se förhållandet mellan dem (via <a href="http://www.brucelawson.co.uk/2009/redesigning-with-html-5-wai-aria/" title="Redesigning with HTML 5 and WAI-ARIA">Bruce Lawson</a>).<br />
För samtliga roller bör man tänka på att <a href="http://www.whatwg.org/specs/web-apps/current-work/multipage/content-models.html#annotations-for-assistive-technology-products-(aria)">inte sätta ut roller som konkurrerar med html-elementets semantiska betydelse</a> (via <a href="http://html5doctor.com/your-questions-13/">html5doctor</a>). Till exempel ska ett button-element inte ha något annat än en button-roll.</p>
<h3>Egenskaper och tillstånd</h3>
<p>Egenskaper och tillstånd används för att meddela en skärmläsare eller annat hjälpmedel när förändringar görs på sidan. Egenskaper och tillstånds sätts genom attribut med formatet <strong>aria-*</strong>. Till exempel: </p>
<p><code>&lt;div aria-hidden="true"&gt;</code></p>
<p>Man kan använda flera attribut på samma element och de ska med fördel kombineras med roll-attributet. T.ex:</p>
<p><code>&lt;a role="button" aria-haspopup="true" aria-owns="minPopup"&gt;</code>   </p>
<p>Skillnaden mellan egenskaper och tillstånd är att egenskaperna (t.ex. aria-labelledby) oftast inte ändras för ett element, medan tillstånd (t.ex. aria-checked) ändras löpande då användaren interagerar på sidan.<br />
Det finns totalt <a href=" http://www.w3.org/TR/2010/WD-wai-aria-20100916/states_and_properties#state_prop_def">35 stycken egenskaper och tilstånd</a>. Några av de, i mina ögon, viktigaste är: </p>
<ul>
<li><strong>aria-live</strong> &#8211; Indikerar att ett område eller element kommer att uppdateras. Värde: off/polite/assertive, beroende på om användaren ska meddelas vid en uppdatering eller ej.</li>
<li><strong>aria-describedby</strong> &#8211; Hänvisning till ett annat element som innehåller mer information som användaren kan behöva för att använda elementet. Värde: element-id.</li>
<li><strong>aria-hidden</strong> &#8211; Om ett element är gömt eller inte. Värde: true/false. </li>
<li><strong>aria-selected</strong> &#8211; Om ett element är valt eller inte. Värde: true/false.</li>
<li><strong>aria-owns</strong> &#8211; Visar att ett element hör ihop med ett annat element, även om DOM-trädet inte avspeglar denna relation. Värde: element-id.</li>
<li><strong>aria-expanded</strong> &#8211; Om ett element, eller annat element som det kontrollerar, betraktas som utfällt eller inte. Värde: true/false. </li>
<li><strong>aria-haspopup</strong> &#8211; Om ett element har en popup-/dropdown-meny kopplad till sig. Värde: true/false.</li>
</ul>
<h3>Verktyg för utvecklare</h3>
<p>Om du använder WAI-ARIA och vill testa resultatet för användaren kan du använda dessa verktyg (via <a href="http://www.eutveckling.se/riktlinjer/webb/3/3/19/">eutveckling.se</a>):</p>
<ul>
<li><a href="https://addons.mozilla.org/sv-SE/firefox/addon/9108/">Juciy Studio accessibility toolbar Firefox plugin</a> &#8211; plugin som känner av och tolkar WAI-ARIA-attribut </li>
<li><a href="http://www.paciellogroup.com/blog/?p=108">Validator SAC</a> &#8211; en validator som har WAI-ARIA-stöd </li>
</ul>
<p>Läs mer om hur du kommer igång med WAI-ARIA i artikeln <a href="http://dev.opera.com/articles/view/introduction-to-wai-aria/">Introduction to WAI ARIA på dev.opera.com</a>. Lycka till!</p>
]]></content:encoded>
			<wfw:commentRss>http://lillbra.se/2010/10/kom-igang-med-wai-aria/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Idag är det CSS Naked Day</title>
		<link>http://lillbra.se/2010/04/idag-ar-det-css-naked-day/</link>
		<comments>http://lillbra.se/2010/04/idag-ar-det-css-naked-day/#comments</comments>
		<pubDate>Fri, 09 Apr 2010 06:01:09 +0000</pubDate>
		<dc:creator>Jonatan Larsson</dc:creator>
				<category><![CDATA[Utveckling]]></category>
		<category><![CDATA[css]]></category>
		<category><![CDATA[css naked day]]></category>
		<category><![CDATA[html]]></category>
		<category><![CDATA[semantisk htm]]></category>
		<category><![CDATA[webbstandarder]]></category>

		<guid isPermaLink="false">http://lillbra.se/?p=395</guid>
		<description><![CDATA[Precis som 2007, 2008 och 2009 är det idag åter dags för CSS Naked Day. Du som besöker den här bloggen i webbläsaren märker att det saknas stilmallar. Varför? The idea behind this event is to promote Web Standards. Plain and simple. This includes proper use of (x)html, semantic markup, a good hierarchy structure, and [...]]]></description>
			<content:encoded><![CDATA[<p>Precis som <a href="http://lillbra.se/2007/04/mycket-naket-pa-webben-idag/">2007</a>, <a href="http://lillbra.se/2008/04/kla-av-dig-for-en-battre-webb/">2008</a> och <a href="http://lillbra.se/2009/04/css-naked-day-2009/">2009</a> är det idag åter dags för <a href="http://naked.dustindiaz.com/">CSS Naked Day</a>. Du som besöker den här bloggen i webbläsaren märker att det saknas stilmallar. Varför?</p>
<blockquote><p>The idea behind this event is to promote Web Standards. Plain and simple. This includes proper use of (x)html, semantic markup, a good hierarchy structure, and of course, a good &#8216;ol play on words. It&#8217;s time to show off your <body>.</p>
<div class="source"><strong>Dustin Diaz</strong> &#8211; <a href="http://naked.dustindiaz.com/">CSS Naked Day</a></p></blockquote>
<p>Är din blogg också naken? Skriv en kommentar!</p>
<p>ps. I slutet av förra året bytte jag mallar och utseende här på bloggen, så för er som endast läser RSS-flödet och inte sett det ännu kan jag tipsa om att när CSS Naked Day är över kolla in den &#8220;nya&#8221; designen <img src='http://lillbra.se/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </p>
]]></content:encoded>
			<wfw:commentRss>http://lillbra.se/2010/04/idag-ar-det-css-naked-day/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Så utvecklar du för iPad</title>
		<link>http://lillbra.se/2010/04/sa-utvecklar-du-for-ipad/</link>
		<comments>http://lillbra.se/2010/04/sa-utvecklar-du-for-ipad/#comments</comments>
		<pubDate>Sat, 03 Apr 2010 23:15:16 +0000</pubDate>
		<dc:creator>Jonatan Larsson</dc:creator>
				<category><![CDATA[Utveckling]]></category>
		<category><![CDATA[apple]]></category>
		<category><![CDATA[css]]></category>
		<category><![CDATA[ipad]]></category>
		<category><![CDATA[iphone]]></category>
		<category><![CDATA[mobila webben]]></category>
		<category><![CDATA[tablet]]></category>

		<guid isPermaLink="false">http://lillbra.se/?p=380</guid>
		<description><![CDATA[Igår släpptes Apples iPad i USA, och med den kommer en ny gren inom webbutveckling: iPad-anpassade webbplatser. Vita Huset har gjort det, Nike och CNN likaså, och listan på sajter som är &#8220;iPad-ready&#8221; växer hela tiden. Även Gmail finns i en sprillans ny iPad-tappning. Så hur gör man då sin egna sajt iPad-vänlig? Här kommer [...]]]></description>
			<content:encoded><![CDATA[<p>Igår släpptes Apples iPad i USA, och med den kommer en ny gren inom webbutveckling: iPad-anpassade webbplatser. Vita Huset har gjort det, Nike och CNN likaså, och <a href="http://www.apple.com/ipad/ready-for-ipad/">listan på sajter som är &#8220;iPad-ready&#8221;</a> växer hela tiden.  Även <a href=" http://googlemobile.blogspot.com/2010/04/google-services-on-ipad-and-tablet.html">Gmail finns i en sprillans ny iPad-tappning</a>.<br />
Så hur gör man då sin egna sajt iPad-vänlig? Här kommer några praktiska tips:</p>
<h3>1. Identifiera en iPad-användare</h3>
<p>För att avgöra om man ska visa iPad-versionen för en besökare är det bästa sättet att känna av vilken User-Agent besökaren har. Så här ser User-Agent-strängen ut för iPad: </p>
<p><code>Mozilla/5.0 (iPad; U; CPU OS 3_2 like Mac OS X; en-us) AppleWebKit/531.21.10 (KHTML, like Gecko) Version/4.0.4 Mobile/7B334b Safari/531.21.10</code></p>
<p>Ett alternativ till automatisk avkänning är att istället skapa en egen url för den iPad-specifika versionen, något som inte är helt ovanligt för redan existerande iphone/tablet-sajter, t.ex. <a href="http://touch.facebook.com">touch.facebook.com</a>.</p>
<h3>2. Håll koll på skärmbredden</h3>
<p>iPadens skärmupplösning är 1024&#215;768 pixlar. Safari på iPad försöker automatiskt skala om sajter för att se bra ut i bredden 768 pixlar (porträttformat). För att undvika en sådan automatzoomning sätter du meta-taggen viewport såhär: </p>
<p><code>&lt;meta name="viewport" content="width=device-width" /&gt;</code></p>
<p>En liten hake är att Safari alltid räknar sin bredd som 768 pixlar oavsett hur man håller sin iPad. Så om du roterar iPaden till landskapsformat, rendreras innehållet inte om utan skalas bara upp för att passa den ökade bredden. </p>
<h4>Uppdatering 2010-04-10</h4>
<p>Men med hjälp av CSS Media Queries kan man känna av vilken ledd som iPaden hålls (landscape eller portrait), och ha olika css-filer beroende på det:<br />
<code>&lt;link rel=”stylesheet” media=”all and (orientation:portrait)” href=”portrait.css"&gt;<br />
&lt;link rel=”stylesheet” media=”all and (orientation:landscape)” href=”landscape.css”&gt;</code></p>
<p>CSS Media Queries kan <del datetime="2010-04-10T09:51:11+00:00">också</del> <ins datetime="2010-04-10T09:51:11+00:00">alltså</ins> komma väl till pass för att servera en css speciellt för iPaden &#8211; läs <a href="http://x7.fi/2010/02/12/how-to-fit-your-website-for-the-apple-ipad/">mer om detta hos x7 Labs</a> och <ins datetime="2010-04-10T09:51:11+00:00"><a href="http://www.cloudfour.com/ipad-orientation-css/">hos Cloud Fou</a>r</ins>.</p>
<h3>3. Utnyttja touch-events</h3>
<p>Safari på iPad stöder <a href="http://developer.apple.com/safari/library/documentation/UserExperience/Reference/TouchEventClassReference/TouchEvent/TouchEvent.html#//apple_ref/doc/uid/TP40009358">DOM TouchEvents</a>. Med touchstart, touchmove, touchend, och touchcancel kan du identifiera hur användaren pekar på sajten. Till hands finns även<br />
<a href="http://jqtouch.com/">jQTouch</a> &#8211; ett intelligent jQuery-plugin som t.ex. hjälper dig att känna av när användaren gör en swipe.<br />
Notera att, samtidigt som nya events finns, är det andra som saknas: mouseover, mouseout och mousemove finns inte tillgängliga, och inte heller pseudo-klassen :hover i css. </p>
<h3>4. Skippa Flash</h3>
<p>Kom ihåg att Safari på iPad inte stöder några plugins. Så om du använder dig av Flash så kommer det inte att visas. Använd istället html5-element som <a href="http://html5doctor.com/the-video-element/">&lt;video&gt;</a> eller <a href="http://html5doctor.com/native-audio-in-the-browser">&lt;audio&gt;</a> för bild och ljuduppspelning, eller javascript och <a href="http://webkit.org/blog/138/css-animation">css-animationer</a> för animeringar och bildspel. </p>
<h3>5. Testning</h3>
<p>Om du inte har en egen iPad och vill testa hur sajten ser ut för iPad-användare så kan du använda Chris Pedericks suveräna <a href="http://chrispederick.com/work/user-agent-switcher/">User Agent Switcher</a> till Firefox för simulering. Du kan även testa i iPhone-simulatorn som finns tillgänglig om man är medlem i <a href="http://developer.apple.com/programs/iphone/">Apples iPhone Developer Program</a>.</p>
<p>För fler detaljer runt utveckling för iPad rekommenderar jag Apples egna <a href="http://developer.apple.com/safari/library/technotes/tn2010/tn2262.html">Technical Note TN2262: Preparing Your Web Content for iPad</a> (via <a href="http://ajaxian.com/archives/web-developers-preparing-for-ipad">Ajaxian</a>). Lycka till! </p>
<p>ps. Frågan om man bör utveckla en iPad-sajt eller inte återstår ju, men det tar vi i nästa bloggpost <img src='http://lillbra.se/wp-includes/images/smilies/icon_wink.gif' alt=';)' class='wp-smiley' /> </p>
]]></content:encoded>
			<wfw:commentRss>http://lillbra.se/2010/04/sa-utvecklar-du-for-ipad/feed/</wfw:commentRss>
		<slash:comments>4</slash:comments>
		</item>
		<item>
		<title>Att använda wtai för telefonnummer i länkar</title>
		<link>http://lillbra.se/2009/09/att-anvanda-wtai-for-telefonnummer-i-lankar/</link>
		<comments>http://lillbra.se/2009/09/att-anvanda-wtai-for-telefonnummer-i-lankar/#comments</comments>
		<pubDate>Wed, 23 Sep 2009 06:15:06 +0000</pubDate>
		<dc:creator>Jonatan Larsson</dc:creator>
				<category><![CDATA[Utveckling]]></category>

		<guid isPermaLink="false">http://www.lillbra.se/2009/09/att-anvanda-wtai-for-telefonnummer-i-lankar/</guid>
		<description><![CDATA[Jag har tidigare skrivit om hur man kan använda tel: eller callto: i länkar för att märka ut telefonnummer och göra de möjliga att ringa upp direkt från webbläsaren. Via Isac Lagerblad hittade jag ett annat sätt att göra detta; nämligen med hjälp av wtai-schemat. Wtai står för Wireless Telephony Application Interface och är ett [...]]]></description>
			<content:encoded><![CDATA[<p>Jag har tidigare skrivit om hur man kan <a href="http://www.lillbra.se/2007/07/anvanda-tel-eller-callto-i-lankar/">använda tel: eller callto: i länkar</a> för att märka ut telefonnummer och göra de möjliga att ringa upp direkt från webbläsaren. Via <a href=" http://twitter.com/icaaq/status/3815767887">Isac Lagerblad</a> hittade jag ett annat sätt att göra detta; nämligen med hjälp av <a href="http://www.scribd.com/doc/19106517/WTAI-">wtai-schemat</a>. Wtai står för Wireless Telephony Application Interface och är ett schema utvecklat av <a href="http://en.wikipedia.org/wiki/Open_Mobile_Alliance">Open Mobile Alliance</a> speciellt för mobiltelefoner.<br />
Wtai-formatet ser ut enligt följande:</p>
<p><code>wtai://&lt;library&gt;/&lt;function&gt; (; &lt;parameter&gt;)* [! &lt;result&gt;]</code></p>
<p>Med schemat kan man både ringa upp nummer och lägga till kontakter. Här är två konkreta exempel på hur det kan se ut i html-kod:</p>
<p><code>&lt;a href=”wtai://wp/mc;0845000000″&gt;08 - 45 00 00 00&lt;/a&gt;</code><br />
<code>&lt;a href=”wtai://wp/ap;0845000000;Anders”&gt;Lägg till i kontakter&lt;/a&gt;</code></p>
<p>Funktionerna ovan är MakeCall (=mc) och AddPhoneBookEntry (=ap). Läs <a href="http://mobile.kaywa.com/files/WAP-170-WTAI-20000707-a.pdf">hela specifikationen för wtai: här (pdf)</a>.</p>
<h3>Vilket schema ska man använda?</h3>
<p>Om man inte gör en mobilsajt skulle jag välja att använda tel: istället för wtai:. Dels för att tel: är <a href="http://www.iana.org/assignments/uri-schemes.html ">det officiellt registrerade och rekommenderade schemat</a>. Men även för att wtai: är utvecklat endast för mobiltelefoner medan tel: i teorin ska fungera på andra enheter också.</p>
<p>Wtai har tidigare haft <a href="http://lists.w3.org/Archives/Public/public-bpwg/2007Jun/0010.html">större stöd bland mobiler</a> än tel:, men frågan är om det inte håller på att ändras. <a href="http://www.scriptygoddess.com/archives/2007/06/14/make-phone-numbers-clickable-to-dial-on-mobile-phones/">Iphone stöder inte wtai:</a>, vilket naturligtvis är ett stort avbräck. Apples <a href=" http://developer.apple.com/iphone/library/featuredarticles/iPhoneURLScheme_Reference/Articles/PhoneLinks.html">iPhone Dev Center rekommenderar istället tel:</a>, vilket också kan vara en anledning att använda just det schemat.</p>
<p>[tags]wtai, tel, callto, URL-scheman, länkar[/tags]</p>
]]></content:encoded>
			<wfw:commentRss>http://lillbra.se/2009/09/att-anvanda-wtai-for-telefonnummer-i-lankar/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
	</channel>
</rss>

