Popup accessibili? Facile a farsi con WindowedLinks

Il sistema dovrà ricordare la scelta dell’utente così quando ritornerà in un secondo momento non avrà da selezionare ulteriormente la modalità di apertura dei collegamenti.

Questo è possibile tramite la gestione dei cookies.

Con l’insieme delle funzioni che seguono avremo una gestione dei cookies per quanto ci interessa: scrittura e lettura.

wiLi.setCookie = function (c_name,value,expiredays){
  var exdate=new Date();
  exdate.setDate(exdate.getDate()+expiredays);
  document.cookie=c_name+ "=" +escape(value) +
    ((expiredays==null) ? "" :
    ";expires="+exdate.toGMTString());
}

wiLi.getCookie = function (c_name){
  if (document.cookie.length>0){
  c_start=document.cookie.indexOf(c_name + "=");
  if (c_start!=-1){
    c_start=c_start + c_name.length+1;
    c_end=document.cookie.indexOf(";",c_start);
    if (c_end==-1) c_end=document.cookie.length;
    return unescape(document.cookie.substring(c_start,c_end));
    }
  }
  return "";
}

Quindi la variabile booleana openNewWindow sarà mantenuta in un cookie, purchè le protezioni di sistema siano tali da consentire la loro scrittura.

Il tutto sarà gestito nella funzione newWindowYesNo().

wiLi.newWindowYesNo = function(firstTime){
  if(firstTime){
    wiLi.openNewWindow = wiLi.getCookie('wiLi')=='true'?true:false;
  }else{
    wiLi.openNewWindow = !wiLi.openNewWindow;
    wiLi.setCookie('wiLi', wiLi.openNewWindow,9000);
  }
  var l = document.getElementById(wiLi.id);
  var buffer = wiLi.sameWindowHTMLDescription;
  var title = wiLi.sameWindowTitleDescription;
  if(wiLi.openNewWindow){
    buffer = wiLi.newWindowHTMLDescription;
    title = wiLi.newWindowTitleDescription;
  }
  title = title.replace(/"/g, """);
  buffer = '<a accesskey="' + wiLi.accessKey + '"' +
    (title!=''?' title="' + title + '"':'') +
    ' href="#" onclick="return wiLi.newWindowYesNo();">' +
  buffer + '<\/a>';
  l.innerHTML = buffer;
  return false;
}

Questa funzione è il fulcro di tutto il sistema: verifica se è la prima volta quindi proverà a prendere l’informazione dal cookie ed imposterà opportunamente la variabile openNewWindow. Altrimenti viene cambiato lo stato della variabile e scritto il suo valore in un cookie che scadrà dopo 9000 giorni ( un bel po’ di tempo, ma se continuerete a tornare sul sito se questa è la vostra preferenza perché modificarvela? Al massimo sarete costretti a cambiarla 3 volte in tutta la vita supponendo che la vostra età sia tra i 10 e i 20 anni). Successivamente identifica l’elemento sulla pagina denominato nwlm (che è l’unico requisito sulla pagina, un elemento che conterrà il link informativo per la possibile scelta della modalità di apertura delle finestre) ed imposta il link all’interno dell’elemento sopra citato per cambiare lo stato del nostro sistema.

In caso di assenza degli script il funzionamento dei links deve essere garantito comunque nella forma originale.

Questa parte non ha bisogno di essere troppo spiegata: come al solito io lavoro in modo che gli script non siano fondamentali per la pagina. Gli script devono dare quel valore aggiunto, quel qualcosa in più che decora, che facilita ma che non sia fondamentale alla fruizione dei contenuti. Quindi se doveste avere un browser che non fa uso di script per policy di sicurezza aziendale, non avrete problemi: il sito vi funzionerà ugualmente ma tutti i links vi verranno aperti nella stessa finestra.


Pubblicato

in

,

da

%d blogger hanno fatto clic su Mi Piace per questo: