Testen Sie, ob Links mit jQuery / javascript extern sind.
Wie kann ich testen, um zu sehen, ob die links sind externe oder interne? Bitte beachten Sie:
- Kann ich nicht codieren Sie die lokale Domäne.
- Ich nicht testen kann für "http". Ich konnte gerade als leicht sein, die Verlinkung auf meine eigene Website mit einem http-absolute link.
- Will ich mit jQuery /javascript, nicht mit css.
Ich vermute, die Antwort liegt irgendwo im Ort.href, doch die Lösung entzieht sich mir.
Dank!
InformationsquelleAutor der Frage Matrym | 2010-05-26
Du musst angemeldet sein, um einen Kommentar abzugeben.
Hinweis: dies ist nur ein quick & dirty Beispiel. Es würde passen alle href="#Anker-links
als externe auch. Es könnte verbessert werden, indem Sie einige zusätzliche RegExp überprüfen.
Update 2016-11-17
Diese Frage wird noch viel Verkehr und mir wurde gesagt, durch eine Tonne von Menschen, die diese akzeptierte Lösung nicht mehrfach. Wie ich bereits sagte, war dies eine sehr schnelle und schmutzige Antwort zu zeigen, dem AUFTRAGGEBER Art und Weise, wie dieses problem zu lösen. Eine anspruchsvollere Lösung ist die Verwendung der Eigenschaften, die denen zugänglich sind, die auf eine
<a>
(Anker) element. Wie @Daved schon in dieser Antwort, der Schlüssel ist zu vergleichen diehostname
mit der aktuellenwindow.location.hostname
. Ich würde es bevorzugen, vergleichen Sie diehostname
Eigenschaften, denn Sie enthalten niemals dieport
enthalten ist, um diehost
Eigenschaft, wenn es unterscheidet sich von 80.So, hier gehen wir:
State of the art:
InformationsquelleAutor der Antwort jAndy
Ich weiß, dieser Beitrag ist alt, aber es zeigt immer noch an der Spitze der Ergebnisse, also wollte ich einen anderen Ansatz bietet. Ich sehe all die regex prüft auf ein anchor-element, aber warum nicht einfach
window.location.host
und Prüfung gegen das elementhost
Eigenschaft?Mit jQuery:
und mit plain javascript:
InformationsquelleAutor der Antwort Daved
Und die nicht-jQuery-Weg
Alle hrefs nicht Anfang mit
http
(http://, https://) werden automatisch so behandelt, als lokaleInformationsquelleAutor der Antwort Sean Kinsey
Verwendung:
InformationsquelleAutor der Antwort James
Hier ist ein jQuery-Selektor nur für externe links:
Einen jQuery-Selektor nur für interne links (einschließlich der nicht-hash-links innerhalb der gleichen Seite) muss ein bisschen komplizierter:
Zusätzliche Filter können in der
:not()
Zustand und getrennt durch zusätzliche Kommas als nötig.http://jsfiddle.net/mblase75/Pavg2/
Alternativ können wir auch den filter interne links mit den vanilla-JavaScript
href
- Eigenschaft, die immer eine absolute URL:http://jsfiddle.net/mblase75/7z6EV/
InformationsquelleAutor der Antwort Blazemonger
Haben Sie vergessen, was passiert, wenn Sie einen relativen Pfad verwenden.
z.B.: /test
Dort sind auch die Ausgabe von Datei-downloads .zip (lokale externe), die Klassen "lokalen download" oder "externen download". Aber nicht eine Lösung gefunden für die es noch.
InformationsquelleAutor der Antwort Freelance webdesigner NL
Können Sie -url-externe Modul.
InformationsquelleAutor der Antwort mrded
Ja, ich glaube, Sie können rufen Sie die aktuelle domain-name mit Ort.href. Eine weitere Möglichkeit ist das erstellen einer link-element das src nach /und dann abrufen der kanonischen URL (diese erhalten Sie eine Basis-URL an, falls Sie einen verwenden, und nicht unbedingt der domain-name).
Siehe auch diesen post: Holen Sie sich die vollständige URI, die aus der Eigenschaft href einen link
InformationsquelleAutor der Antwort Savageman
Für Interessierte, ich habe eine ternäre version der if-block mit einem Scheck, um zu sehen, welche Klassen das element hat und welche Klasse bekommt befestigt.
Den google-analytics-bit kann ignoriert werden, aber dies ist, wo Sie würde wahrscheinlich gerne was machen mit der url ist jetzt, dass Sie wissen, welche Art von link es ist. Fügen Sie einfach code in der ternary-block.
Wenn Sie nur wollen, um zu überprüfen, 1 Art der link dann ersetzen Sie die ternaries mit einer if-Anweisung, statt.
Bearbeitet, um hinzufügen eine Frage, die ich stieß. Einige meiner hrefs waren "/Kurse/" wie so. Ich habe einen Scheck für einen localpage, das prüft, ob es ein slash am Anfang und Ende der href. Obwohl nur die überprüfung für ein '/' am Anfang wahrscheinlich ausreichend.
InformationsquelleAutor der Antwort George F Delaney
Ich diese Funktion für jQuery:
Nutzung ist:
$('a').isExternal();
Beispiel: https://codepen.io/allurewebsolutions/pen/ygJPgV
InformationsquelleAutor der Antwort Allure Web Solutions