5

Qual è la migliore procedura per quanto riguarda l'utilizzo di collegamenti/<a> tag con hrefs espliciti ad altre pagine del sito (ad esempio href = "/ blah/blah/blah.html) vs avere hrefs/divs/etc che non hanno un href esplicito e avere il loro insieme onclick all'interno del gestore di documenti pronto con JavaScript in un file main.jsHrefs vs JavaScript onclick (rispetto a JavaScript non invadente)

Non sono un esperto quando arriva allo sviluppo web, ma mi diverto a imparare jQuery e simili e mi ritrovo a sottoscrivere la nozione di JavaScript non intrusivo.Mentre entrambe le opzioni sopra riportate non infrangono la parte "non avere JavaScript all'interno dell'HTML" di quella mentalità, suppongo Sono appeso a "Separazione della struttura e presentazione dal comportamento". Mentre è annuncio timidamente più naturale per me inserire un tag > in un tag > e impostare esplicitamente l'href, mi trovo a pensare che questo è davvero un comportamento e quindi dovrebbe essere impostato all'interno del JS.

E 'troppo tardi, o non ci sono abituato? L'altro lato di me vede il vantaggio di metterlo nel JS, b/c ora ho la capacità di controllare completamente il comportamento di quel collegamento senza dover modificare nulla all'interno dell'HTML. Immagino tu diresti che sono sulla proverbiale recinzione. Per favore aiutami a buttarmi giù. =)

(Una nota:. Il sito utilizza JavaScript pesantemente, quindi la nozione di fornire funzionalità con JS spento non è davvero un problema come la maggior parte del sito non funzionerà senza di essa)

risposta

10

Questo davvero sta andando troppo lontano per una moltitudine di ragioni.

  1. È in genere un codice complicato, che dovrebbe essere evitato.
  2. Non fornisce alcun vantaggio tangibile per il tuo sito web.
  3. Non ha un fallback eloquente per no-js.
  4. Ha un effetto negativo su SEO. Nello specifico, i bot non eseguono il tuo script, e quindi non vedranno i link e alla fine lo saranno non indicizzare correttamente il tuo sito.
  5. probabilmente più importante, questo effetto può influire gravemente UX per gli screen reader o gli utenti con JS disabili (per esempio, molti browser di telefoni cellulari disabilitano JS)

Alla fine, se non avete esplicita necessità di rompere il muffa (ad esempio supporto legacy) dovresti fare del tuo meglio per seguire un design discreto, e questo è molto invadente nel senso che stai usando JavaScript per creare una struttura statica, qualcosa che è molto meglio fare con HTML.

6

Gli utenti normali non saprà davvero la differenza. Tuttavia, i motori di ricerca e le pratiche SEO richiederebbero l'uso di href = "" per collegarsi alle altre pagine se si desidera che gli spider li seguano. Lo stesso vale se il visitatore utilizzava uno screen reader o aveva esigenze particolari di accessibilità. Molti di quelli leggono il codice sorgente e non il DOM.

In generale, se si collegano pagine e azioni, utilizzare href.

Se è necessario collegare funzionalità aggiuntive o no davvero andare a un'altra pagina o l'azione poi utilizzare JavaScript stile onclick oppure usa jQuery per collegare gli eventi.

+0

Non ho pensato all'angolo del motore di ricerca, che è un ottimo punto. In questo caso il sito è per un'applicazione web interna, quindi non ha molta importanza, ma penso che in un senso più generale questo sarebbe un motivo valido per utilizzare gli hrefs. Grazie per l'input. –

1

Accetto con altri manifesti. Aggiungo che se l'href è statico - cioè le interazioni su quella pagina non cambiano il suo valore - allora puoi considerarlo parte della "struttura e presentazione" della pagina.Nei casi insoliti in cui è dinamico e qualche azione sulla pagina cambia il suo valore - questo è quando diventa "comportamento" - e solo allora sarebbe opportuno lasciare che sia JS a gestirlo.

D'altro canto, se il codice esistente aveva già un hrefs a 9 dinamicamente impostato e si sta solo aggiungendo un href statico, probabilmente seguirò la guida dello sviluppatore precedente per la leggibilità.

1

Il plug-in della storia di jquery è molto carino, consente di impostare href = '#/url' in questo modo è possibile avere veri URL, veri pulsanti indietro, ma i tuoi handler devono semplicemente ascoltare gli eventi legati a history.url.

.

http://tkyk.github.com/jquery-history-plugin/

non utilizzando i tag potrebbe probabilmente avere anche una sorta di problemi di usabilità per gli utenti ipovedenti con i lettori di schermo

4

collegamenti non sono comportamento - che rappresentano i legami tra un documento e l'altro browser Web. offrire il comportamento di navigati ng alla pagina collegata quando fai clic sui link, ma questo è il comportamento del browser e ogni browser ha le proprie convenzioni per il modo migliore per farlo: ad esempio, il clic principale potrebbe aprire la pagina nella scheda corrente, il clic centrale potrebbe aprire in una nuova scheda e M4 potrebbe aprire il collegamento in una nuova pagina. Sostituire queste informazioni non elaborate con un comportamento interrompe la capacità del browser di offrire questo tipo di scelta.

E ci sono anche altri client che potrebbero essere interessati. I ragni e altri robot leggeranno la tua pagina per le informazioni nei tuoi tag di ancoraggio per determinare a cosa è collegata la pagina. Se invece usi "comportamento", stai rimuovendo questa informazione significativa dalla pagina.

Problemi correlati