(Risolto) Valida un XHTMLStrict anche con attributo "Target"

Discussioni inerenti lo sviluppo di markup XHTML e CSS validi.

Moderatori: antoscarface, Kagemitsu

Regole del forum
Per scrivere del codice all'interno di ogni post, utilizzare il tag: [syntax=il_linguaggio]codice[/syntax] sostituendo "il_linguaggio" con il linguaggio del codice che dovete inserire, ad esempio: html, css, javascript, php, asp, ecc...

(Risolto) Valida un XHTMLStrict anche con attributo "Target"

Messaggioda sebastianscaramuzza » venerdì 13 gennaio 2012, 2:12

Ciao ragazzi,
apro questo thread perchè sono sicuro che sarà di utilità a molti.

Se hai mai provato a validare un XHTML "stretto" - per intenderci quelli con questo DTD:

Sintassi: html [ Scarica ] [ Nascondi ]
  1. <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">

Ti sarai accorto che l'amato/odiato validatore (http://validator.w3.org) ti dice che NON esiste l'attributo "target".
Ma come - ti sarai detto? Assurdo vero? Eppure per ragioni varie il W3C ha deciso che i link non possono avere il target. Cosa vuol dire questo? Che se per aprire una pagina in un'altra tab usavi:
Sintassi: html [ Scarica ] [ Nascondi ]
  1. <a href="http://www.youtube.com/" target="_blank">

Ora NON puoi più! Eppure è così utile aprire le finestre in altro tab... mmh :doh:

Così ho cercato una soluzione e mi sono imbattuto in alcune discussioni. La più autorevole l'ho trovata su SitePointche tra l'altro propone il suo script.
Figo! :-) Bhè peccato che non va... :swear:

Così me ne sono uscito con la mia soluzione. Eccola:

1. Prima di tutto sostituisci tutti i target="_blank" con rel="external":
Sintassi: html [ Scarica ] [ Nascondi ]
  1. <a href="http://www.youtube.com/" target="_blank">

diventa ora
Sintassi: html [ Scarica ] [ Nascondi ]
  1. <a href="http://www.youtube.com/" rel="external">

2. Poi esegui questo script (attenzione però richiede cha carichi prima il Framework JQuery):
Sintassi: javascript [ Scarica ] [ Nascondi ]
  1. $("a[rel~=external]").attr('target','_blank');

Semplice ed indolore (e BREVE).

Se ti interessa come funziona ecco una sintesi:
Sintassi: javascript [ Scarica ] [ Nascondi ]
  1. $("a[rel~=external]")

Qui prendiamo tutti gli A che hanno all'interno dell'attributo "rel" ANCHE "external".

Perchè ho usato questo selettore (~=) invece che semplicemente $("a[rel=external]")?
Perchè se hai dei link come questo:
Sintassi: html [ Scarica ] [ Nascondi ]
  1. <a href="#" rel="nofollow external me"></a>

JQuery lo ignorerà in quanto non c'è una corrispondezza esatta (infatti contiene anche nofollow e me).

Il resto dello script non fa che aggiungerea tutti gli A selezionati - in modo dinamico - il caro vecchio attributo "target=_blank"

Fammi sapere se ti è stato utile o se hai domande ;-)
sebastianscaramuzza

Avatar utente
 
Messaggi: 44
Iscritto il: domenica 18 dicembre 2011, 11:13
Località: Bologna

Torna a XHTML & CSS



cron