Jag har läst en hel del om xhtml och css på senare tid, och nu när jag ska börja bygga en helt ny sajt vill jag göra allt rätt från början. Helst vill jag använda mig av XHTML 1.0 Strict, men ett problem med den är att iframes inte är tillåtna.
Jag ska bygga en community, och vill därför att menyer och annat inte ska laddas om när man navigerar. Det är endast själva huvudinnehållet som ska förändras. Jag kommer att ha en onlinelista, och den vill man ju inte ladda om jämt (den kommer istället att uppdateras då och då mha AJAX).
Detta hade jag lätt kunnat lösa, antingen med ett antal frames eller en iframe i mitten, men nu vill jag göra det så "rätt" som möjligt, och undrar då vad alternativet är.
Ska jag skrota mina planer på att köra Strict, eller finns det ett bättre alternativ till iframes?
Om all design ligger i en extern css-fil och sidan själv innehåller så lite kod som möjligt, att allt som återkommer på varje sida i stället infogas som includes, då tror jag att det kan vara svårt att hitta en mer snabbladdad sida. Så snabbladdad att besökaren ofta inte kommer att märka det.
Vill man så kan man ha t.ex meny och header som fixed, för att få en frameside-känsla.
Vill du att någonting ska se ut som en iframe med scroll är det bara att begränsa innehållets plats och lägga till scroll...
Har man något tungladdat någonstans längre fram på sajten så kan man se till att webläsaren börjar läsa det redan på första sidan...
Så jag tycker du ska fundera vidare på Strict...
Det gäller att mata webläsaren med information en gång... inte med nya t.ex inlinesstyles och liknande, för varje sida den ska läsa, om man vill uppnå det du beskriver... så tror jag ...
W3C har <object> som en stark kanditat om vi pratar om att inkludera dokument - se http://www.w3.org/TR/html4/struct/objects.html#h-13.5 - det är bara det att stödet för att inkludera HTML-filer via <object> är lite - ehm - ofullständigt på de flesta håll)
Dynamisk uppdatering av innehållet i en del av ett dokument (typ en div) är möjligt med lite fiffig Javasript (tänk AJAX ;) )
Scrollfunktioner kan du få till med CSS (exempelvis genom overflow: auto och fast höjd på en div)
typ...
Och alla tre alternativen är tillgängliga även för dokument kodade i "Strict"...
Bättre ? IMHO är det en fråga om personligt tycke och smak - men personligen tror jag att "AJAX" i betydelsen att dynamiskt kunna uppdatera en del av en sida via asynkrona http-anrop mha Javascriptfunktioner är här för att stanna, och att den tekniken även kommer att göra IFRAMES en smula överflödiga i kraft av sina kraftfullare möjligheter ;)
<object> och <iframe> är lite olika när det gäller "fallback". Tex om servern retunerar statuskod 404 får du med <iframe> se felsidan, medan med <object> får du istället dess innehåll i märkkoden. Innehållet i <iframe> visas bara om webbläsaren saknar stöd för <iframe>. Vilket som är önskvärt beteende beror på omständigheterna, men <object> är inte en direkt ersättare för <iframe>.
Det är egentligen inte själva scroll-effekten hos en iframe jag vill ha, den vet jag att man kan få i en div, men jag vill att allting runt omkring huvudinnehållet ska hållas intakt.
Om vi tar onlinelistan som exempel. Den ska fungera ungefär som icq, msn eller google talk. Alltså en lista över användare som är online och som man kan skicka meddelanden till. Om jag klickar på en användare visas en div med ett formulär där jag kan skriva ett meddelande till en annan användare. Om jag inte har en iframe till huvudinnehållet så kommer meddelande-diven att försvinna när man klickar någonstans. Det slipper jag ju om jag använder mig av en iframe.
I så fall bör du npg, som antyds ovan, titta lite på att uppdatera en del av en webbsida med Javascript också (exempel: http://www.dynamicdrive.com/dynamicindex17/ajaxcontent.htm ) - för <object> har du bara nytta av för att inkludera en del av ett dokument ;)
Bättre att du kör antingen ajax eller dynamic include för en sådan, än iframes eller object.
Jag skulle väl råda mer åt dynamic include hållet än ajax för en community sida, då ajax inte fungerar i IE om man avaktiverar ActiveX.. dvs, den skulle inte fungera på en del webbcaféer, vilket dynamic include gör. :)
<p>Lite text</p>
<object data="test.html" width="200" height="70" id="testing">
Din webläsare stödjer inte OBJECT, men du kan ladda ner <a href="test.html">Test HTML</a>.
</object>