Dies verursacht einige Trauer unter meinen IE8-Benutzern.Was bewirkt, dass IE8 einige Dateidownloads blockiert?
Auf meiner Seite habe ich Datei-Download über PHP-Skript gestartet (file_download.php? File = X123). Auf dieser Seite werden einige Daten in einer Datenbank aufgezeichnet und anschließend werden Header verwendet, um den Download zu erzwingen. Alles auf dieser Seite scheint in allen Browsern zu funktionieren.
Sein, wie ich diese Seite aufrufen, dass sie mir die lästigen kleinen zu sein scheint „Zum Schutz Ihrer Sicherheit - Internet Explorer wurde blockiert Website von Dateien auf den Computer heruntergeladen“.
Wenn ich einen regulären href-Tag verwende <a href="/file_download.php?file=X123">download</a>
es startet korrekt (ohne IE Download-Nachricht gesperrt).
Aber wenn ich mit einem jQuery-Skript starten, gibt es mir diese Warnung. So
Ich dachte IE8 JavaScript-Umleitungen verdächtig sein könnte, so habe ich eine einfache JS-Funktion auf der lokalen Seite, aber es funktionierte kein Problem.
So scheint es jQuery die Ursache sein kann ... ist es, weil das window.location Ereignis von einer anderen Seite oder das Skript Quelle genannt wird? Weiß jemand wie das funktioniert?
werde ich weiter testen, aber jetzt könnte jemand etwas Licht auf dieses Problem glänzen? Benutzer zu fragen, ihre IE-Einstellungen zu optimieren, ist keine Option.
Dank
-------- jQuery-Code --------------
jQuery("a").click(function(e){
if(jQuery(this).attr("href") !== undefined){
downloadLink = jQuery(this).attr("href");
thingClicked = jQuery(this);
dll_io = downloadLink.indexOf("/file_download.php?file_id=");
dll_io2 = downloadLink.indexOf("/file_download_safe.php?file_id=");
if(dll_io == 0 || dll_io2 == 0){
e.preventDefault();
jQuery.getScript("/includes/get_login.php?file_id=" + downloadLink + "&dll_io=" + dll_io + "&dll_io2=" + dll_io2 + "&last_url=" + document.URL, function(rp){
//get_login.php sets 'requested_dl_id' cookie
if(dll_io2 == 0){
window.location = downloadLink;
}else{
if(rp == "allow"){
window.location = downloadLink;
}else{
jQuery("#download_prompt").click();
}
}//end condition: if file_download_safe -> set cookie and send to page. IF file_download -> set cookie and decide to prompt or not.
});
}//end if fd == file_download.php
}//end only execute code if 'a' has a defined 'href' attribute
});
---- ---- Update
Ich habe mich jetzt genug erzogen, um die Ursache dieses Problems zu verstehen - aber keine einfache Lösung. Die Ursache ist IE7 & 8 automatisch blockiert Downloads, die von Nicht-Benutzerereignisse gestartet werden. Ein onclick-Ereignis startet also einen Download, aber kein jQuery-Skript. Ich suche immer noch nach einem Workaround.
+1 nur für die erste Zeile haben ... – jeroen
Können Sie den verdächtigen Code posten? –
Laden Sie eine Kopie von jQuery, das in Ihrer Domain gehostet wird, oder ziehen Sie es aus einer anderen Domäne (wie einem CDN)? –