Vor einiger Zeit musste ich die Quelle der Seite über JavaScript erhalten. Diese Operation ist sehr einfach. Sie können es mit document.referrer erhalten. Es gibt jedoch immer noch viele unerwartete Situationen in tatsächlichen Anwendungen. Lassen Sie es uns also kurz sortieren.
Das erste Problem, auf das ich gestoßen bin, ist, dass der Wert des Dokuments nach der Übernahme von der HTTPS -Seite zur HTTP -Seite leer ist. Aus Sicherheitsgründen verwenden einige wichtige Seiten vieler Websites (z. B. die Anmeldeseite von Taobao) das HTTPS -Protokoll. Wenn ein Benutzer, der sich nicht auf dem Link zu Seite B (HTTP -Seite) auf Seite A angemeldet hat, auf Seite A (HTTP -Seite) verlangt, dass der Benutzer jedoch auf die Anmeldeseite (HTTPS -Seite) springt, und dann zurück zu B (http) nach der Protokollierung. Referrer, wenn es eine HTTP -Seite und eine HTTPS -Seite im Pfad gibt, wird der Pfad von HTTPS zu http unterbrochen.
Die Wurzel dieses Problems ist die Sicherheitsrichtlinie des Browsers, und es scheint keine besonders gute Lösung zu geben, sich allein auf JavaScript zu verlassen. Eine Kreisverkehrsidee besteht darin, das Fenster zu verwenden. NAME, Schreiben Sie die URL der aktuellen Seite in das Fenster.Name auf der HTTPS -Seite und lesen Sie sie dann auf der nächsten Seite (HTTP -Seite).
Kann das Dokument zusätzlich zu dieser Situation normal abgerufen werden, indem Sie andere Seiten springen? Ich habe gesucht und festgestellt, dass hier jemand eine Liste zusammengestellt hat, aber sie ist nicht sehr vollständig, wie der Fall von IE6, der nicht enthalten ist. Also habe ich es selbst gemacht, n -Browser in der virtuellen Maschine installiert und alle Situationen getestet (es war wirklich eine physische Aufgabe), und die Ergebnisse wurden in der folgenden Tabelle gezeigt:
| arbeiten | Dh6 | IE7 | IE8 | Dh9 | Firefox | Chrom | Oper | Safari |
|---|---|---|---|---|---|---|---|---|
| Geben Sie die URL direkt in die Adressleiste ein | "" " | "" " | "" " | "" " | "" " | "" " | "" " | "" " |
| Zugriff auf URL von einem Lesezeichen | "" " | "" " | "" " | "" " | "" " | "" " | "" " | "" " |
| Klicken Sie auf den Hyperlink von Seite A und springen Sie zu Seite B (Ziel = "_ Selbst"). | √ | √ | √ | √ | √ | √ | √ | √ |
| Klicken Sie auf den Hyperlink von Seite A und springen Sie zu Seite B (Ziel = "_ leer"). | √ | √ | √ | √ | √ | √ | √ | √ |
| Klicken Sie mit der rechten Maustaste auf den Hyperlink von Seite A und öffnen Sie Seite B in einer neuen Registerkarte | - - | √ | √ | √ | √ | √ | √ | "" " |
| Klicken Sie mit der rechten Maustaste auf den Hyperlink von Seite A und öffnen Sie Seite B in einem neuen Fenster | √ | √ | √ | √ | √ | √ | √ | "" " |
| Ziehen Sie den Link zur Adressleiste | "" " | Nicht ziehen | Nicht ziehen | "" " | "" " | "" " | "" " | "" " |
| Ziehen Sie den Link in die Registerkartenleiste | - - | "" " | "" " | "" " | "" " | "" " | "" " | "" " |
| Verwenden Sie die Vorwärts- und Rückenknöpfe des Browsers | √ | √ | √ | √ | √ | √ | √ | √ |
| JS modifizieren Sie den Ort.href | "" " | "" " | "" " | √ | √ | √ | √ | √ |
| JS verwendet window.open | "" " | "" " | "" " | "" " | √ | √ | √ | √ |
| Serverumleitung (302 Sprung) | Targeting der vorherigen Seite | Targeting der vorherigen Seite | Targeting der vorherigen Seite | Targeting der vorherigen Seite | Targeting der vorherigen Seite | Targeting der vorherigen Seite | Targeting der vorherigen Seite | Targeting der vorherigen Seite |
| Seite Meta -Aktualisierung | "" " | "" " | "" " | "" " | "" " | Wende Seite | Wende Seite | Wende Seite |
Das "√" in der obigen Tabelle bedeutet, dass der Empfehler normal abgerufen werden kann, "" bedeutet, dass der Empfehler leer ist.
Mit Ausnahme von IE sind andere Browser die neuesten Versionen, die auf der offiziellen Website heruntergeladen werden können. Unter ihnen hat Safari sowohl die Windows -Version als auch die Mac -Version getestet, und die Schlussfolgerung ist gleich.
Es gibt auch einige Fälle, in denen keine Tests durchgeführt wurden, z. B. ob der Empfehler unter jedem Browser bei der Klicken auf Flash zum Springen unterhalten werden kann.
Die meisten Situationen in der obigen Tabelle stehen im Einklang mit den Erwartungen, aber es scheinen mehrere Dinge zu achten:
1. In der Safari klicken Sie mit der rechten Maustaste, um den Link zu öffnen, den Verweis verloren.
2. In IE wird der Ort geändert.
3. Bei der Verwendung von Metasprung geht der Empfehler unter IE/Firefox verloren.
Schließlich lautet eine einfache Schlussfolgerung: Wenn Sie über das Dokument auf die Quelle zugreifen müssen. Referrer Collection -Seite, ist es am besten, JS nicht zum Springen oder Öffnen eines neuen Fensters zu verwenden und nicht mit Meta zum Springen zu verwenden.