Ich würde gerne eine Schnur nehmen
var a = "http://example.com/aa/bb/"
und verarbeiten Sie es zu einem Objekt, so dass
a.hostname == "example.com"
und
a.pathname == "/aa/bb"
javascript
url
Freddiefujiwara
quelle
quelle
hostname
undpathname
direkt aus demlocation
Objekt.Antworten:
Der moderne Weg:
Gibt ein Objekt mit Eigenschaften
hostname
undpathname
zusammen mit einigen anderen zurück .Das erste Argument ist eine relative oder absolute URL. Wenn es relativ ist, müssen Sie das zweite Argument (die Basis-URL) angeben. Zum Beispiel für eine URL relativ zur aktuellen Seite:
Neben Browsern ist diese API seit Version 7 auch in Node.js verfügbar
require('url').URL
.quelle
new URL('/stuff?foo=bar#baz')
->SyntaxError: Failed to construct 'URL': Invalid URL
quelle
pathname
entfernt den führenden Schrägstrich, während die anderen Browser dies nicht tun. So werden Sie am Ende mit/path
oderpath
, je nach Ihrem Browser.hier zu finden: https://gist.github.com/jlong/2428561
quelle
parser = location;
und alle folgenden Zeilen funktionieren. Versuchte es gerade in Chrome und IE9.pathname
der führende Schrägstrich im IE nicht enthalten ist. Stelle dir das vor. : Dhttp:
auch wenn Sie nurdomain.com
an href übergeben (ohne Protokoll). Ich wollte dies verwenden, um zu überprüfen, ob das Protokoll fehlte, und wenn ja, könnte ich es hinzufügen, aber es geht davon aus, dass http: so nicht in der Lage war, es für diesen Zweck zu verwenden.Hier ist eine einfache Funktion, die einen regulären Ausdruck verwendet, der das
a
Tag-Verhalten imitiert .Vorteile
Nachteile
- -
- -
BEARBEITEN:
Hier ist eine Aufschlüsselung des regulären Ausdrucks
quelle
gibt die aktuelleUrl zurück.
Wenn Sie Ihre eigene Zeichenfolge als URL übergeben möchten ( funktioniert in IE11 nicht ):
Dann können Sie es wie folgt analysieren:
quelle
Die Antwort von freddiefujiwara ist ziemlich gut, aber ich musste auch relative URLs in Internet Explorer unterstützen. Ich habe die folgende Lösung gefunden:
Verwenden Sie es nun, um die erforderlichen Eigenschaften zu erhalten:
JSFiddle-Beispiel: http://jsfiddle.net/6AEAB/
quelle
var locationHost = (location.port !== '80' && location.port !== '443') ? location.host : location.hostname;
var locationOrigin = location.protocol + '//' + locationHost;
js-uri (verfügbar in Google Code) verwendet eine Zeichenfolgen-URL und löst ein URI-Objekt daraus auf:
quelle
Was ist mit einfachen regulären Ausdrücken?
quelle
//user:[email protected]/path/x?y=z
und Sie werden sehen, warum ein einfacher regulärer Ausdruck es nicht schneidet. Werfen Sie jetzt etwas Ungültiges hinein und es sollte auch auf vorhersehbare Weise aussteigen.Heute bin ich auf dieses Problem gestoßen und habe Folgendes gefunden: URL - MDN-Web-APIs
Diese Rückkehr:
Ich hoffe, mein erster Beitrag hilft dir!
quelle
Hier ist eine Version, die ich von https://gist.github.com/1847816 kopiert , aber neu geschrieben habe, damit sie leichter zu lesen und zu debuggen ist. Der Zweck des Kopierens der Ankerdaten in eine andere Variable mit dem Namen "Ergebnis" besteht darin, dass die Ankerdaten ziemlich lang sind. Wenn Sie also eine begrenzte Anzahl von Werten in das Ergebnis kopieren, wird das Ergebnis vereinfacht.
quelle
Browserübergreifendes URL-Parsen umgeht das relative Pfadproblem für IE 6, 7, 8 und 9:
Verwendung ( Demo JSFiddle hier ):
Ergebnis:
quelle
Für diejenigen, die nach einer modernen Lösung suchen, die in IE, Firefox UND Chrome funktioniert:
Keine dieser Lösungen, die ein Hyperlink-Element verwenden, funktioniert in Chrome gleich. Wenn Sie eine ungültige (oder leere) URL an Chrome übergeben, wird immer der Host zurückgegeben, von dem aus das Skript aufgerufen wird. In IE werden Sie also leer, während Sie in Chrome localhost (oder was auch immer) erhalten.
Wenn Sie versuchen, den Überweiser anzusehen, ist dies trügerisch. Sie sollten sicherstellen, dass der Host, den Sie zurückerhalten, in der ursprünglichen URL enthalten ist, um dies zu beheben:
quelle
Der AngularJS-Weg - Geige hier: http://jsfiddle.net/PT5BG/4/
quelle
$document
und$window
Dienstleistungen verwendenEinfache und robuste Lösung mit dem Modulmuster. Dies beinhaltet einen Fix für IE, bei dem
pathname
der nicht immer einen führenden Schrägstrich (/
) hat.Ich habe einen Gist zusammen mit einer JSFiddle erstellt, die einen dynamischeren Parser bietet. Ich empfehle Ihnen, es auszuprobieren und Feedback zu geben.
Demo
Code-Snippet anzeigen
Ausgabe
quelle
Verwenden Sie https://www.npmjs.com/package/uri-parse-lib für diese
quelle
Warum nicht benutzen?
quelle
Sie können auch die
parse_url()
Funktion aus dem Locutus- Projekt (ehemals php.js) verwenden.Code:
Ergebnis:
quelle
Es funktioniert sowohl mit absoluten als auch mit relativen URLs
quelle
abc://username:[email protected]:123/path/data?key=value&key2=value2#fragid1
Hör auf, das Rad neu zu erfinden. Verwenden Sie https://github.com/medialize/URI.js/
quelle
Verwenden Sie einfach die Bibliothek url.js (für web und node.js).
https://github.com/websanova/js-url
quelle
Ein einfacher Hack mit der ersten Antwort
Dies kann auch ohne Argument verwendet werden, um den aktuellen Hostnamen zu ermitteln. getLocation (). Hostname gibt den aktuellen Hostnamen an
quelle