2011-01-06 6 views
0

Die Frage ist nur für IE7, weil location.replace (strURL) in allen anderen gängigen Browsern zu funktionieren scheint. Ich versuche, einige Analysen js auszuführen und dann die Benutzer an den Speicherort einer Ressource (normalerweise doc oder pdf) umzuleiten, die sie herunterladen möchten. Der Benutzer öffnet eine Seite mit dem JS-Code. Nachdem der Download verfolgt die broswer sollte die resurouce URL mit dem folgenden Code laden, indem Sie den aktuellen Seite Eintrag in der Geschichte AUSTAUSCH mit der Ressource url:Öffnen Sie eine neue Seite im gleichen Broswer-Fenster, ohne den Browserverlauf zu beeinflussen

if (IE) { 
      window.open(strURL,"_self", true); //doesn't work 
      //window.open(strURL,"_self",undefined, true); //doesn't work 
      return; 
     } 

Dieser Code erstellt Eintrag in der Geschichte für die Ablen Seite. Ich habe versucht, iframe auf der gleichen Seite, aber IE erscheint eine Sicherheitswarnung, wenn die Datei ist ein * .doc

Irgendwelche Ideen?

+0

Sie verloren mich bei "Der Benutzer öffnet ...". – DanMan

Antwort

0

Ich bin mir nicht sicher, ob es eine Möglichkeit gibt, dies in IE7 zu vermeiden oder nicht. Vielleicht ist ein anderer Ansatz möglich. Injizieren Sie die Analyse-JS vor dem Umleiten in die aktuelle Seite, und vermeiden Sie so die Notwendigkeit, eine weitere Seite vollständig zu laden. Bei diesem Ansatz würden Sie ein neues Skript-Tag erstellen und es in das Kopfelement einfügen. Das Skript wird beim Laden ausgeführt, führt Ihre Analysen durch und löst dann die Weiterleitung für den Download als letzten Schritt aus (z. B.).

function redirectWithAnalytics() { 
    var s = document.createElement('script'); 
    s.src = 'path/to/analytics.js'; 
    s.type = 'text/javascript'; 
    document.getElementsByTagName('HEAD')[0].appendChild(s); 
} 
+0

Leider ist das in meinem Fall nicht möglich. Ich weiß nicht, ob ein Benutzer auf einen Download-Link geklickt hat, bis ich eine Reise in die Datenbank mache, weil die Anfrage einen gemeinsamen Asset-Handler durchläuft, der Anfragen nach verschiedenen Dateien, einschließlich Site-Images, bedient. Die Entscheidung, ob das Tracking-Skript injiziert werden soll, kostet einen weiteren Trip zum Server. Wie auch immer, mache ich etwas falsch mit der window.open Methode. Ich kann niemanden mit dem gleichen oder ähnlichen Problem finden, was mich glauben macht, dass ich etwas falsch machen könnte? –

+0

Warum nicht den src des Skripts zum serverseitigen Skript machen, das die Datenbank überprüft, und den Analysecode gegebenenfalls zurückgeben, andernfalls eine leere Zeichenfolge oder einen Aufruf an eine andere Funktion zurückgeben, um den Benutzer zu benachrichtigen, dass er nicht geklickt hat gültiger Link? –

Verwandte Themen