2010-12-07 17 views
8

Benutzer füllen ein Formular aus. Mit einem gültigen Formular klicken sie, um eine Datei herunterzuladen. Ich möchte in der Lage sein, sie auf eine andere Seite umzuleiten (z. B. page2.html) UND einen Download zu initiieren.Laden Sie eine Datei herunter und redirect ... oder alternativ

Ich kann Download auf page2.html nicht starten, weil die meisten Browser Sicherheitswarnungen kennzeichnen, wenn ein Download-Link nicht direkt angeklickt wird.

Wie wird so etwas mit Javascript oder jquery erreicht? Offensichtlich ist die folgende nicht funktioniert, aber es ist für illustrative Zwecke gedacht:

document.getElementById("foo").onclick = function(){ 
    window.location = "/download.exe"; 
    window.location = "/page2.html"; 
} 

Antwort

10

Sie können einen Link zu der Datei und onclick verwenden, um "zur nächsten Seite in Kürze" aufzurufen.

<script> 
function thanks() { 
    setTimeout(function() { 
     document.location.pathname = "page2.html"; 
    }, 1000); 
} 
</script> 

<a href="file.exe" onclick="thanks()">Download now!</a> 
+0

Okay! Das funktioniert zumindest für IE. In FF, Chrome und Safari haben Benutzer nicht genügend Zeit, auf das Feld "Zulassen" zu klicken. Aber wie Sie in Ihrem Kommentar oben gesagt haben, muss ich vielleicht damit leben. Vielleicht für meine IE-Benutzer. – Kyle

+0

Schließen sie einfach die "Download" -Prompt, wenn sie versucht, zu etwas anderem zu gehen? Seltsam. –

+0

Ja die Download-Prompt geht weg (außer IE). – Kyle

3

Sie den Download auf Seite 2, indem page2.html „change“ seiner Lage (auf der Download-URL) initiieren kann, wenn die Seite geladen wird:

$(function() 
{ 
    setTimeout(function() 
    { 
     window.location.pathname = '/download.exe'; 
    }, 5000); // download the file in 5 seconds 
}); 

Ich bin mir ziemlich sicher (obwohl nicht 100%), die keine Sicherheitswarnung auslösen wird.

+0

Ich habe dies auf Safari 5, Chrome 8, FF 3.6 und IE7, IE8 getestet. Bei Internet Explorer ist das Download-Verhalten anders (als wenn Sie direkt auf einen Download-Link klicken). Auf IE, Nachricht "Um Ihre Sicherheit zu schützen ...", während, wenn Sie direkt klicken, öffnet es nur eine Datei speichern. – Kyle

+1

@Emile: das wird der Fall sein, was auch immer du tust; Es ist normales Verhalten, mit dem du leben musst. Deshalb haben Websites oft "wenn dieser Download nicht startet, klicken Sie hier" und solche Dinge. Ich glaube, dass es normal ist, den Download zu starten, wenn die Seite geladen wird (ohne zusätzliche Probleme). –

+0

eine Randnotiz .... und das ist sehr seltsam, aber auf Safari 5 für Chrome, window.location.Patchname führt zu unerwarteten Ergebnissen ... Safari versucht, Ihren Pfadnamen mit der Standardsuchmaschine zu "suchen". – Kyle

Verwandte Themen