Il componente TOC genera gli attributi id degli elementi di intestazione in base al testo dell’intestazione.
Ecco un esempio di intestazione.
main outlet
Gli spaziaggi derivano dagli stili applicati a #main-outlet, che è un elemento dell’app Discourse non correlato a questo post.
Non è la fine del mondo se potessi specificare un id alternativo per l’intestazione. Il componente TOC lo supporta:
https://github.com/discourse/DiscoTOC/blob/master/common/header.html#L293
Sfortunatamente, Discourse rimuove gli attributi id dagli elementi dei post prima che il codice sopra venga eseguito, quindi la logica viene neutralizzata.
Ecco un’intestazione che utilizza <h4 id="alt-main-outlet">main outlet</h4>:
main outlet
Notare che viene ancora utilizzato main-outlet invece di alt-main-outlet.
Immagino che Discourse lo faccia nell’anticipazione che qualcuno possa manomettere un elemento della pagina. Ma con il componente TOC è abbastanza semplice aggirarlo.
Se esiste una soluzione a questo problema o se si tratta di un problema già ampiamente discusso che mi sono perso, chiedo scusa per le opinioni non richieste che seguono ![]()
P.S.
Personalmente penso che Discourse NON dovrebbe rimuovere gli attributi id degli elementi. Questa è una costruzione fondamentale delle pagine web ed è utilizzata nella navigazione delle pagine con frammenti URL. Se qualcuno vuole creare un collegamento a un elemento in un post, penso che sia il suo diritto come autore.
Il fatto che il TOC apra la possibilità di manipolare gli ID suggerisce che questa misura di rimozione degli ID in primo luogo potrebbe potenzialmente essere eliminata.
Se il team di Discourse è così preoccupato per il dirottamento degli ID, tutti gli ID di Discourse dovrebbero avere un prefisso, ad esempio discourse-main-outlet, e la rimozione degli ID dovrebbe applicarsi solo a quegli ID con prefisso.
Posso apprezzare l’impossibilità di questo dato il codice esistente!
Si può immaginare un insieme di ID esclusi (ad esempio main-outlet, ecc.) che vengono rimossi. Questo lascia comunque il problema del TOC utilizzato per aggirare questa misura di sicurezza, ma permetterebbe almeno agli autori di creare ancoraggi utili.
P.P.S.
Direttamente correlato a questo è il problema delle intestazioni con lo stesso contenuto testuale.
Topic One
Examples
Topic Two
Examples
Con il TOC, entrambe le intestazioni Examples ricevono lo stesso ID, il che è ovviamente molto rotto. Il TOC potrebbe aggiungere indici incrementali (ad esempio examples, examples-2, ecc.) — e probabilmente dovrebbe farlo come comportamento predefinito — ma sarebbe ancora meglio una soluzione al problema discusso sopra, che permette agli autori di decidere come descrivere il proprio contenuto. Ad esempio <h5 id="topic-one-examples">Examples</h5>, ecc.