C’è un modo per aprire tutti <a href> link di una pagina in una nuova finestra?

Ho un sacco di <a href=".html"> link e voglia di farli tutti si aprono in nuove finestre.

So che posso fare una ricerca e sostituzione di tutto per aggiungere target="_blank" a tutti i miei <a href="..."> link.

Tuttavia, c’è un modo veloce, come ad esempio l’impostazione di uno stile CSS, o l’aggiunta di un po ‘ di JavaScript, per ottenere la stessa cosa?

  • È possibile cercare e sostituire il vostro progetto.
  • il refactoring è sempre meglio di soluzioni alternative. Si salva te stesso un sacco di lavoro nel lungo periodo. Quindi basta fare una ricerca e sostituzione, invece di introdurre un po ‘ di javascript soluzione che inoltre rallenta la tua pagina.
  • Ho detto che so che posso fare un cerca e sostituisci -_-
  • Nessuno ha chiesto una domanda, se è veramente necessario. Perché vuoi a tutti i collegamenti per aprire in una nuova scheda / windows? Come risultato, il tuo sito non sarà in grado di essere visualizzato su alcuni dispositivi mobili (Kindle con browser con tutte le schede, per esempio) e gli utenti si lamentano (io odio quando il sito si apre anche alcuni link in una nuova scheda, per non parlare di tutti, anche quelli interni). I link sono per la navigazione, quindi perché si vuole evitare di navigazione dell’utente al luogo dove si vuole essere?
  • Penso che con la BASE soluzione di DESTINAZIONE la mia pagina lavoreranno in questi dispositivi. è una buona soluzione.

 

4 Replies
  1. 32

    Se si dispone di una pagina composta di solo i collegamenti, considerare <base target="_blank">. Questo apre tutti i link in una nuova finestra (ma comprende anche gli obiettivi di forme, a meno che non venga con <form target="_self">.

    Come altri hanno dimostrato, senza modificare il codice sorgente HTML, è possibile utilizzare Javascript per scorrere tutti <a> tag e aggiungere il target attributo o aggiungere un listener di eventi che imposta l’attributo di destinazione in modo dinamico.

  2. 28

    Se si dispone di jQuery è semplice

    $("a").attr("target", "_blank");

    O regolare Javascript

    var links = document.links;
    for (var i = 0; i < links.length; i++) {
         links[i].target = "_blank";
    }

    Come per @Lekensteyn suggerimento, senza Javascript (aggiunto per Completezza)

    <base target="_blank">.
    • Invece di getElementsByTagName("a") si dovrebbe usare document.links. Questo ha come avvantaggiati di includere solo i link (vale a dire <a href> elementi) e non qualcosa come <a name="foo">.
    • Questo non funzionerà per i collegamenti che vengono aggiunti dopo lo script viene chiamato.
  3. 10

    CSS: N.

    JavaScript: Delegare un evento click, che aggiunge un target="_blank" attributo fare clic su un link.

    document.body.addEventListener(function(e) {
        if (e.target.nodeName.toUpperCase() === 'A' && e.target.href) {
            e.target.target = '_blank';
        }
    }, true);

    Nota: Se il <a> elemento contiene altri elementi, si potrebbe desiderare di attraversare la struttura ad albero per scoprire se un elemento di ancoraggio è fatto clic:

    document.body.addEventListener(function(e) {
        var target = e.target;
        do {
            if (target.nodeName.toUpperCase() === 'A' && target.href) {
                target.target = '_blank';
                break;
            }
        } while (target = target.parentElement);
    }, true);

    O, se sei un jQuery-amante:

    $('body').on('click', 'a', function(e) {
        e.target.target = '_blank';
    });
  4. 1

    sì, u può aggiungere un attributo con JS per tutti i link in un documento HTML con il nome ‘target’ con valore ‘_blank’ 😉

    Si potrebbe anche aprire sostituire href di tutti i collegamenti da url javascript:openInWindow(url) utilizzando questo, e scrivere la funzione in JS che si apre una nuova finestra e impostare la posizione di url 😉 Google vi aiuterà con entrambi.

Lascia un commento