HTML for dem, der vil noget – Del 4

I denne sidste del af HTML-kurset tager Kristian Hansen os med på en tur rundt i en af de nyeste HTML-teknologier: push-teknologien.

Som udtrykket antyder, bliver informationerne ved push-teknologien skubbet ud til brugeren. Det vil sige, at han ikke længere er nødt til at besøge ens side for at se de nyeste opdateringer. Både Netscape og Microsoft leverer push-teknologi med deres nyeste browser-pakker. I Netscape sker det gennem programmet NetCaster, mens det i Internet Explorer sker gennem de såkaldte Kanaler. Hvordan man kommer til sit programs push-del er beskrevet i tekstbokse andetsteds i artiklen.

Push-teknologien er imidlertid ikke kun mulig ved hjælp af HTML. Andre programmer – som for eksempel Webguidens lysavis og Yahoo’s newsticker – bruger den også til at bringe de seneste nyheder til brugerens skærm.

I denne artikel vil vi koncentrere os om push-teknologien indenfor HTML. Når man har en mængde HTML-dokumenter, og vil distribuere dem via push-teknologien har man en kanal. Brugere har mulighed for at abonnere på en kanal,  hvilket vil sige, at kanalens indhold hentes med jævne mellemrum, så den nyeste version altid ligger parat på brugerens maskine.

Forskellige standarder

Næsten selvfølgeligt har Netscape og Microsoft ikke valgt at impolementere push-teknologi ved hjælp af den samme standard. Netscape har valgt at bruge JavaScript, mens Microsoft har valgt at udvikle et nyt sprog: Channel Definition Format (CDF). Denne artikel vil beskrive begge metoder.

Internet Explorer

Som nævnt bygger Internet Explorers implementation af kanaler på CDF. CDF er bygget på XML – eXtensible Markup Language. XML er også en standard for formatering af dokumenter, men i modsætning til HTML er XML bygget til at blive udvidet og specialiseret- for eksempel til specifikation af kanaler.

Opret en kanal

For at oprette en kanal, skal man oprette en CDF-fil. Den skal indeholde informationer om kanalen, ikke selve de informationer, brugeren vil se, men informationer, der for eksempel angiver kanalens titel, opdateringsinterval og logo.

De almindelige kommandoer

Som det ses af eksempel 1, angives kommandoer i CDF i kantede parenteser, ligesom kommandoer i HTML.

Definitionen af en kanal foretages med channel-kommandoen. Som parametre til den skal base og href angives. Base angiver den adresse, alle øvrige adresser i kanalen er relative til. Href angiver adressen på de dokument, der skal vises, når kanalen vælges. Title angiver kanalens titel, mens abstract er en kort beskrivelse af kanalens indhold. Denne beskrivelse vises, når markøren holdes over kanalens navn.

Hvert item-element angiver et element i kanalen. På den måde er det muligt for en udbyder at stille informationer om flere forskellige emner til rådighed. Href-parametren i item-kommandoen angiver det dokument, der skal vises, hvis elementet vælges, mens title og abstract er henholdsvis sidens titel og resume. Der er ingen begrænsning på antallet af item-elementer i en CDF-fil.

Kanalens logo

Det er muligt at tilføje logoer til såvel selve kanalen som de enkelte elementer i den. Det gøres ved hjælp af logo-kommandoen. Den tager to parametre: href, der er adressen på den billede, der skal vises som kanalens logo, og style, der angiver billedets type. Der findes tre forskellige billedtyper: icon har størrelsen 16 x 16, og vises i listen under foretrukne|kanaler i Internet Explorer. Image har størrelsen 32 x 80 og vises i kanalvælgeren, mens ImageWide bruges, når kanalvælgeren vises i fuldskærm. Bemærk ,at logo-kommandoen skal afsluttes med />

Organisering af kanaler

Hvis man forestiller sig, at oversigten over dagens programmer skal opdeles på de forskellige tv-programmer, kan det gøres ved at oprette endnu en kanal ved navn Dagens tv-program. Denne kanals elementer er de forskellige tv-programmer – DR1, DR2 og TV2. Disse elementer angives med item-kommandoen som alle andre elementer. Når den indre channel-kommando afsluttes med </CHANNEL>, bliver de efterfølgende elementer vist som før.

Eksempel 2 viser, hvordan man bruger logoer og underkanaler.

Opdateringstidspunkt og -interval

For at den server, HTML-dokumenterne ligger på, ikke skal blive overbelastet, er der mulighed for at angive, hvor tit Internet Explorer skal opdatere kanalen ved at hente en ny version af siderne, og også at angive et klokkeslæt, så det ikke falder sammen med det tidspunkt, serveren i forvejen er mest belastet.

Disse tidspunkter angives ved hjælp af schedule-kommandoen. Ved hjælp af parametrene StartDate og EndDate er det muligt at angive, datoen for den første og sidste opdateringen af kanalen. Kommandoen IntervalTime kan bruges inden i Schedule-kommandoen, og angiver, det interval kanalen skal opdateres med. Parametren day angiver antallet af dage mellem de forskellige opdateringer.

Kommandoerne EarliestTime og LatestTime angiver start- og sluttidspunktet på den periode, hvor Internet Explorer har lov til at opdatere siden. Begge har de en parameter Hour, der angiver klokkeslættet.

Eksempel 3 viser, hvordan opdateringsinformationer kan sættes.

Så abonnér dog på min kanal

For at få folk til at abonnere på ens kanal, kan man indsætte et link til den på sin hjemmeside. Det gøres ved at lade linket pege på CDF-filen. For eksempel <A HREF = kanal.cdf>Abonnér på min kanal!</A>

Netscape

Netscapes kanaler er mere komplicerede, men alligevel nemme at lave. Kanalerne er komplicerede, fordi de ikke bygger på den relativt simple XML-standard, men i stedet på Netscapes egen JavaScript. Til gengæld ligger der på Netscapes hjemmeside en Wizard, der hjælper med at lave kanaler. Den findes på adressen http://developer.netscape.com/library/examples/index.html?content=netcast/wizard/index.htm. I denne artikel vil der blive taget udgangspunkt i Netscapes Wizard. Herefter vil de vigtigste dele af Javascript-programmet blive gennemgået – det hele vil foregå på et niveau, hvor også folk uden kendskab til Javascript kan være med. Javascript-programmet er ret omfattende, og der har desværre ikke været plads til at trykke det hele. Derfor er kun den meste interessante del af programmet medtaget i artiklen – resten ligger på cd-rom’en.

På Netscapes hjemmeside findes en wizard, der gør det nemt, at oprette sin egen kanal.

Hekseri

De første spørgsmål fra i Netscapes Wizard går på generel information om kanalen – dens navn og dens placering. Dernæst skal opdateringsintervallet angives. I modsætning til Microsofts CDF-standard, angiver Netscapes standard et præcist tidspunkt for opdateringen. Det betyder, at ens server kan blive temmelig belastet på det tidspunkt.

Dernæst skal guiden have at vide, hvor mange niveauer, der skal downloades. Hvis det kun er hovedsiden, der skal downloades, skal man vælge et niveau. Er det også de sider, der refereres fra hovedsiden, der skal hentes, skal man vælge niveau 2 – document level plus links. I samme billede kan man angive en begrænsning for, hvor mange kilobytes, der maskimalt må downloades.

Nu er man kommet dertil, hvor kanalens type skal angives. Her kan man vælge mellem web-top og default window. Web-top svarer lidt til Inernet Explorers Active Desktop, hvor kanalerne kan lægges på selve skrivebordet. I Netscape ligges web-top kanaler mellem skrivebordet, og vinduerne. Det betyder, at det er kanalen, der bliver vist, når man minimerer alle andre vinduer, men desværre dækker den for de ikoner, der ligger på skrivebordet. Hvis man vælger, at kanalen skal vises i default window, vises den i et almindeligt Netscape Navigator-vindue. Vælges default window, skal også vindues størrelse og placering angives. Til sidst bliver man bedt om at skrive den tekst, der skal stå ved Netcaster knappen, der giver brugeren mulighed for at abonnere på kanalen.

Til sidst bliver man spurgt, om det er i orden, at guiden automatisk giver Netscape besked om den nye kanal, så de – eventuelt – kan til føje den til deres oversigt over kanaler.

Programmet

Når alle spørgsmål er besvaret genereres det HTML-dokument, der indeholder Netcaster-knappen og det JavaScript-program, der giver folk mulighed for at abonnere på den. Programmet består af en del forskellige funktioner, der hver udfører en del af arbejdet. Det gælder blandt andet kontrol af, at man ikke bruger Internet Explorer, og kontrol af, om Netcaster allerede er startet – er det ikke tilfældet startes den automatisk.

Den interessante del af programmet starter anden gang, der står <SCRIPT> i dokumentet. Her defineres en række værdier, der angiver kanalens opsætning – her kan man genfinde alle de information, man gav Netscapes Add Channel Wizard.

chanUrl og chanName angiver henholdsvis kanalens adresse og titel. chanIntervalTime er lidt mere kryptisk. Den angiver, hvor tit kanalen skal opdateres. -2 er hvert kvarter, -3 hver halve time, -4 hver time, -5 en gang om dagen, mens -6 angiver, at kanalen skal opdateres en gang om ugen. Værdien af chanAbsoluteTime bestemmer, det klokkeslæt kanalen skal opdageres på. Tidspunktet angives i minutter efter midnat.

chanDepth og chanActive indeholder henholdsvis antallet af niveauer, og et ettal, der angiver, at kanalen er aktiv. chanMode definerer, hvordan kanalen skal vises, og de efterfølgende angiver placeringen, hvis et vindue er valgt til at vise kanalen i.

I Netscapes kanaldefinition skal opdateringstidspunkt angives præcist.

De ovennævnte værdier bruges i funktionen addChannelAPI(), hvor de kopieres over i variabler, der sendes til Netcaster, og er kun vist så tidligt i programmet for overskuelighedens skyld. Hvis man vil tilføje sine egne værdier, skal ændringen derfor foretages i addChannelAPI-funktionen. Skal en beskrivelse af kanalen tilføjes, gøres det ved at indsætte linien chan.desc  = “beskrivelse af kanalen”; Kanalbeskrivelse er ikke understøttet i Netcaster 1.0, men det gør ingen skade at have den – og så er man forberedt til senere opdateringer.

Netscape eller Microsoft? – Begge dele!

Selvom Netscape og Microsoft definerer deres kanaler meget forskelligt, er det, der vises i kanalerne for begges vedkommende almindeligt HTML. Det vil sige, at de samme informationer kan vises i begge browsere, blot skal hver defineres på deres måde. Det vil sige, at man skal lave både en CDF-fil og et HTML-dokument med JavaScript. I praksis kan man fint have begge knapper på sin hjemmeside, og så bare bede brugere trykke på den knap, der passer til vedkommendes browser.

Eksempel 1: Et simpelt eksempel på en CDF-fil

<?XML VERSION=”1.0″?>

<CHANNEL BASE = “http://www.fjernsynsinformation.dk/kanal” HREF = “http://www.fjernsynsinformation.dk/kanal/velkommen.htm”>

<TITLE>Fjernsynsinformation</TITLE>

<ABSTRACT>

Dagens tv-program og ugens film og serier.

</ABSTRACT>

  <ITEM HREF = “program.htm”>

    <TITLE>Dagens tv-program</TITLE>

    <ABSTRACT>Oversigt over programmer, der vises i dag.</ABSTRACT>

  </ITEM>

 

 

  <ITEM HREF = “film.htm”>

    <TITLE>Ugens film</TITLE>

    <ABSTRACT>Oversigt over film, der vises i l&oslash;bet af ugen.</ABSTRACT>

  </ITEM>

  <ITEM HREF = “serier.htm”>

    <TITLE>Ugens serier</TITLE>

    <ABSTRACT>Oversigt over de serier, der vises i ugens l&oslash;b.</ABSTRACT>

  </ITEM>

</CHANNEL>

Eksempel 2: Logoer og underkanaler i CDF

<?XML VERSION=”1.0″?>

<!– Kanal definition –>

<CHANNEL BASE = “http://www.fjernsynsinformation.dk/kanal/” HREF = “http://www.fjernsynsinformation.dk/kanal/velkommen.htm”>

<TITLE>Fjernsynsinformation</TITLE>

<LOGO HREF = “/img/logo.gif” STYLE = “ICON”/>

<ABSTRACT>

Dagens tv-program og ugens film og serier.

</ABSTRACT>

  <!– Underkanal –>

  <CHANNEL HREF = “program.htm”>

  <LOGO HREF = “/img/program.gif” STYLE = “ICON”/>

  <TITLE>Dagens tv-program</TITLE>

  <ABSTRACT>Oversigt over programmer, der vises i dag.</ABSTRACT>

    <!– Elementer i underkanalen –>

    <ITEM HREF = “dr1.htm”>

      <LOGO HREF = “/img/dr1.gif”/>

      <TITLE>DR1</TITLE>

      <ABSTRACT>Dagens program p&aring; DR1</ABSTRACT>

    </ITEM>

    <ITEM HREF = “dr2.htm”>

      <LOGO HREF = “/img/dr2.gif”/>

      <TITLE>DR2</TITLE>

      <ABSTRACT>Dagens program p&aring; DR2</ABSTRACT>

    </ITEM>

    <ITEM HREF = “tv2.htm”>

      <LOGO HREF = “/img/tv2.gif”/>

      <TITLE>TV2</TITLE>

      <ABSTRACT>Dagens program p&aring; TV2</ABSTRACT>

    </ITEM>

  </CHANNEL>

  <!– Elementer i hovedkanalen –>

  <ITEM HREF = “film.htm”>

    <LOGO HREF = “/img/film.gif” STYLE = “ICON”/>

    <TITLE>Ugens film</TITLE>

    <ABSTRACT>Oversigt over film, der vises i l&oslash;bet af ugen.</ABSTRACT>

  </ITEM>

  <ITEM HREF = “serier.htm”>

    <LOGO HREF = “/img/serier.gif”STYLE = “ICON”/>

    <TITLE>Ugens serier</TITLE>

    <ABSTRACT>Oversigt over de serier, der vises i ugens l&oslash;b.</ABSTRACT>

  </ITEM>

</CHANNEL>

 

Eksempel 3: Opdateringsinformation i CDF

<?XML VERSION=”1.0″?>

<!– Kanal definition –>

<CHANNEL BASE = “http://www.fjernsynsinformation.dk/kanal/” HREF = “http://www.fjernsynsinformation.dk/kanal/velkommen.htm”>

<!– Opdateringsinformation –>

<SCHEDULE STARTDATE = “1998-01-01” ENDDATE = “1998-12-31”>

  <INTERVALTIME DAY = “7” />

  <EARLIESTHOUR = “0” />

  <LATESTHOUT = “7” />

</SCHEDULE>

.

.

.

Eksempel 4: En kanal i Netscape Netcaster

<SCRIPT LANGUAGE=”JavaScript1.2″>

      // For more info on these properties, see http://developer.netscape.com/library/documentation/netcast/devguide/index.html

      var chanURL = “http://www.fjernsynsinformation.dk”;

      var chanName = “Fjernsynsinformation”;

      var chanIntervalTime = -5;     //max 1380

      var chanAbsoluteTime = 60;

      var chanMaxCacheSize = 1024000; //max 5120000 Kb

      var chanDepth = 2;              //max 2 levels

      var chanActive = 1;

      var chanWidthHint = 640;

      var chanHeightHint = 480;

      var chanMode = “window”;

      var chanType = 1;

 

      var getChannelObject = null;

      var addChannel = null;

      var nc = null;

      var ncActive = 0;

      var poller = null;

 

.

.

.

</SCRIPT>

 Yderligere oplysninger

Der er mange flere muligheder med kanaler og push-teknologien end det har været muligt at beskrive her. På følgende Internet-adresser er kanaler, push-teknologi og lignende beskrevet:

CDF

http://www.microsoft.com/standards/cdf-f.htm

http://www.microsoft.com/ie/press/whitepaper/pushwp.htm

XML

http://www.w3.org/pub/WWW/TR/WD-xml.html

Netscapes kanaler

http://developer.netscape.com/library/examples/index.html?content=netcast/wizard/index.htm

http://developer.netscape.com/library/documentation/netcast/devguide/index.html

Comments are closed.