Under de senaste sju åren har webbdesign kört fast i en visst spår. Det hela började med upptäckten att man kunde använda tabeller för att skapa layouter för hemsidor. Man använder rader och celler för att placera elementen på sidorna. Detta sätt fungerar ju fortfarande bra men resulterar i svårhanterlig kod som är svår att uppdatera. Tabellerna med sina celler har blivit ett fängelse och gjort oss att fastna i ett visst tänkande hur man bygger upp layouten.
Några började drömma om ett nytt sätt att placera objekten med hjälp av <div> och <span> taggarna. CSS Zen Garden är en webbplats helt dedikerad åt detta nya sätt att skapa design.
Ett problem med det nya sättet att göra design är ju att den mest använda webbläsaren idag, IE6, inte stödjer CSS 2.1 standarderna. Men med IE7 kommer situationen bli mycket bättre och det känns som man på allvar kan anamma de nya teknikerna. Microsoft har gjort en egen "Zen Garden"-design för att visa hur bra IE7 kommer att stödja CSS. Läs mer om exprimentet i artikeln The Zen in 7: Enhanced Styles In Internet Explorer 7.
Eric meyer är en man som forskar mycket i nya CSS ideer och driver en webbplats som heter css/edge. Där visas många exempel på nytänkande tekniker. Där visar han bland annat hur man kan göra effekter genom fixerade bakgrundbilder, popupmenyer i ren CSS och mycket mer.
På Stopdesign.com finns en post som handlar om hur en webbsida görs om för att använda ordnade listor istället för tabeller. Lägre laddningstider och renare kod blir resultatet.
Select * Into [DestinationTableName] From [SourceTableName]
Vill man inte ha med data utan bara strukturen kan man använda följande SQL.
Select * Into [DestinationTableName] From [SourceTableName]) Where 1 = 2
Av någon anledning fungerade inte ovanstående skript i SQL Query Analyzer men det beror nog på att jag i mitt fall hade en tabell med namnet "Admin". Den klagade på Invalid object eller likande. Det hela gick bra när jag körde det genom en asp.net applikation.
Filen Web.sitemap i Asp.Net är väldigt användbar. Om man som jag redan har utvecklat ett CMS-system i Asp.Net 1.1 så kan man ju skapa den dynamisk från SQL Servern. Det är ju lite extra jobb att skriva in alla sina url:er och metadata igen.
Shelta är en butik som ligger på Andra Långgatan i Göteborg och kan lätt klassificeras som göteborgs fräschaste streetwearbutik. Idag släppte vi deras webbshop som vi har jobbat fram under det senaste året. DJ Digga på Shelta har själv gjort den stiliga designen och vi har kodat shoppingsystemet.
Jag har stött på följande fel några gånger. Det uppstår ofta när man utför AJAX-operationer och byter ut innehållet i komponenter. Speciellt med rullistor har jag problem. Här hittade jag ett forum med några teorier.
Hela felmeddelandet
Ogiltigt återanslag- eller återanropselement. Händelseverifiering aktiveras med <pages enableEventValidation="true"/> i konfigurationen eller <%@ Page EnableEventValidation="true" %> på sidan. Av säkerhetsskäl verifierar denna funktion att argumenten till återanslående- eller återanropshändelser kommer från den serverkontroll som ursprunligen renderade dem. Om data är giltiga och förväntade, bör du använda metoden ClientScriptManager.RegisterForEventValidation för att registrera verifieringsdata.
En enkel lösning kan vara att stänga av event valideringen helt i web.config eller på själva sidan. Men det kan ju vara dumt att gå miste om den extra säkerheten. Injektionsattacker är något att se upp för och event valideringen är till för att skydda mot dessa.
Att ha med .aspx-ändelsen och massa querystring-parametrar på webbadresser känns lite klumpigt ibland, och inte så bra ur sökoptimerings-synpunkt. IIS6 med ASP.NET 2.0 har inte något inbyggt sätt att göra detta. Jag menar istället för för att ha en lång url som "Blog.aspx?year=2006&month=09" är det ju trevligare med "blog/2006/09".
I Ruby on Rails är omskrivning av URL:er enkelt och en naturlig del av språket. På Apache servrar finns mod_rewrite som äe en bra modul för alla PHP-utvecklare.
Med Asp.Net kan man använda HttpContext.RewritePath men det är inte så lätt som man först kan tro. Jag hittade mängder av artiklar om olika lösningar men många beskrev problem med cachning, themes och problem med PostBack.
På Urlrewriting.net finns det en open source komponent som sägs ha löst många av dessa problem. Har dock inte provat den själv.
Jag har även läst en del info om att det kommer finnas bättre stöd för detta när IIS 7.0 kommer.
Så här gör man för att inkludera Javascript inuti head-taggen genom kod i Asp.Net.
HtmlGenericControl Include = new HtmlGenericControl("script"); Include.Attributes.Add("type", "text/javascript"); Include.Attributes.Add("src","FilSomSkaInkluderas.js"); this.Page.Header.Controls.Add(Include);
Glöm inte att skriva in runat-attributet på head-taggen
<head runat="server">
Hittade även en artikel om hur man kan få Visual Studio att gruppera javascriptfiler under .aspx-filen i Solution Explorer. Krävs dock ett tillägg i register-nycklarna. Snälla VS utvecklare - lägg till detta direkt i programmet.
Det jag sökte var att kunna behålla positionen på scrollbars efter postback, men bara på vissa knappar. I Asp.Net kan man ju använda SmartNavigation till detta men det fungerar bara i IE (när jag provade senast) och ger en del oväntade buggar som bieffekt. Sen finns det också MaintainScrollPositionOnPostback, som man kan lägga i @Page-direktivet men då sker ompositionering på alla länkar och knappar som utlöser postback. Ibland vill man bara att vissa typer av postningar ska göra det.
Lösningen som använder javascript och två gömda input-fält hittade jag i detta forumet skrivet av Fredrik Normén
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml" >
<head runat="server"> <title>Scrollbar position</title> <script language="javascript"> function SetScrollerPosition() { if (document.getElementById("XPos").value != "") { var x = document.getElementById("XPos").value; var y = document.getElementById("YPos").value; window.scrollTo(x, y); }
Under mitt googlande efter detta hittade jag även ett annat intressanta demo på samma ämne. Detta rullar ner en div med overflow till nedersta positionen så fort man lägger till någon i den. Perfekt om man ska göra en AJAX-chatt eller liknande. Detta kommer jag igång att jag försökt lösa tidigare utan lycka.
Här kommer en liten uppdatering om e-handelsidan Junkyard.se. Ni som känner till sidan väl vet den brukar stängas ner i minst en vecka före säsongsstart. Inatt öppnade vi den igen (enligt tradition cirka 26 timmar försenat).
Som vanligt har vi passat på att göra lite förändringar. Nu finns det två nya avdelningar. Dels Mega Store där man kan se alla produkter från alla avdelningar. Besökarna tyckte det var lite jobbigt att först söka igenom Street avdelningen efter t ex skor och sedan leta på Skate avdelningen. Så nu blir det lite lättare att få överblick. Sen har vi även Moto Store där FMX fans och motor intresserade kan hitta en del roligt.