Home Page di Graziano Scappatura
Loading

HTTP Server di Apache e i 'behaviour'

sabato 22 novembre 2008

Sul Web si fa un uso diffuso dei menu orizzontali "drop down" (a tendina). Per realizzare questi piacevoli menu, si fa uso dei fogli di stile (CSS) e dei selettori per i vari elementi HTML.

Un selettore particolarmente importante per realizzare questo tipo di menu per un sito Web, e' ":hover", che permette di cambiare lo stato di una porzione di codice HTML che realizza spesso una "tendina" di un menu a discesa.

Purtroppo, c'e' un problema noto nell'ambiente che e' legato al fatto che non tutti i browser supportano "completamente" il selettore :hover. In particolare, Internet Explorer (IE6) supporta :hover solo per il tag "a". Visto che un menu a tendina normalmente usa il selettore :hover anche su altri elementi, cio' risulta - con brutta sorpresa per lo sviluppatore Web che si trova per la prima volta a sviluppare una tale funzionalita' - in un sito praticamente inservibile per una buona porzione di utenti.

C'e' da dire pero' che, fortunatamente, sebbene IE6 non supporta completamente il selettore ":hover", nonostante il controllo venga effettuato con Javascript, il comportamento che implementa quando trova un foglio di stile con il selettore :hover in un tag diverso da a, e' di trascurare il tag senza dare alcun errore.

Rimane comunque il problema di far funzionare i menu a tendina con IE6. Per raggirare questo problema, viene incontro un aspetto che i browser Internet Explorer (IE) supportano, ovvero i "behaviour". I behaviour sono file ".htc" o ".hta" che si collegano a particolari elementi HTML usando i fogli di stile, e permettono loro di comportarsi in modi speciali (come i comportamenti che hanno con i browser piu' moderni come Internet Explorer 7 - IE7 - e Mozilla Firefox - MF).

A tal proposito, ho trovato molto interessante il tutorial Come creare un menu css dropdown orizzontale di base. Tale articolo, fa riferimento al problema che ho citato e ricorre al behaviour "csshover2.htc" scritto dal Peter Nederloff, ampiamente commentato in CSS Hover.

Tuttavia, tutte queste linee guida non sempre possono essere sufficienti a vedere il proprio menu drop down funzionare correttamente. Infatti, il corretto funzionamento puo' anche dipendere dal Web server che si usa per pubblicare il sito. Ad esempio, se si usa HTTP Server di Apache nella sua configurazione nativa, si continuera' ad avere un menu drop down non funzionante.

Non poco ci ho sbattuto la testa prima di riuscire a capire che il problema era legato al MIME type del behaviour. Difatti, HTTP server di Apache, se il MIME type per l'estensione .htc non e' definito, restituisce:

  HTTP/1.1 400 Bad Request

Chiaramente, questa e' una causa del cattivo funzionamento del menu drop down.

Di questo me ne sono potuto accorgere per il semplice fatto che il menu funzionava correttamente su Come creare un menu css dropdown orizzontale di base, mentre a me continuava a non funzionare nonostante avevo meticolosamente ( :-) ) ricopiato il codice funzionante. A quel punto mi era rimasta solo la chance di testare il menu su un diverso Web server. L'alterantiva, che ho scelto io e' stato Tomcat e su Tomcat il menu ha funzionato correttamente.

A seguito di questa difformita', ho 'googlato' e sono riuscito risalire ad un preziosissimo articolo della Microsoft in cui viene citato il problema, la causa e la soluzione (PRB: Apache Web Server non carica i comportamenti HTC).

Riconfigurando HTTP server di Apache - aggiungendo il MIME type per i behaviour, e riavviando il servizio, il menu a tendina funziona correttamente anche con IE6.

Infatti, la risposta HTTP questa volta e':

  HTTP/1.1 200 OK

e, in particolare, l'header "Content-type" e':

  Content-Type: text/x-component

Se cosi' non e', allora bisogna solo andare a controllare i permessi e la proprieta' del behaviour sul file system.

Comments:

Post a Comment:
  • HTML Syntax: Allowed

Search

Tag Cloud

Archive

recent Post

Link

Blogroll

Feed

All Post

Related entries

  • Installazione di Android Kitkat 4.4.4 su HTC HD2
  • Il 'buon senso' del MIUR
  • Installazione di un certificato SSL Web Server
  • BlackBerry Desktop Software
  • Ironia e aneddoti informatici
  • Microsoft Outlook e Blackberry
  • Error 1058: The service cannot be started
  • PHP 5.2.5 su Tomcat 5 in ambiente Windows
  • HTTP Server di Apache e i 'behaviour'
  • Preambolo a questa categoria
  • ADS