Это вызывает некоторое огорчение у моих пользователей IE8.
На моем сайте загрузка файлов запущена через php-скрипт (file_download.php?file=X123). На этой странице он записывает некоторые данные в базу данных, а затем использует заголовки для принудительной загрузки. Все на этой странице работает нормально во всех браузерах.
Это то, как я называю эту страницу, которая, кажется, дает мне раздражающую маленькую фразу: «Для защиты вашей безопасности — Internet Explorer заблокировал загрузку файлов сайтом на ваш компьютер».
Если я использую обычный тег href download
, он запускается правильно (без сообщения о блокировке загрузки IE).
Но когда я запускаю скрипт jQuery, появляется это предупреждение.
Итак, я подумал, что IE8 может с подозрением относиться к перенаправлениям javascript, поэтому я сделал простую функцию JS на локальной странице, но она работала без проблем.
Таким образом, кажется, что jQuery может быть виновником... потому что событие window.location вызывается с другой страницы или источника скрипта? Кто-нибудь знает, как это работает?
Я продолжу тестирование, но пока не мог бы кто-нибудь пролить свет на эту проблему? Просить пользователей изменить настройки IE — это не вариант.
Спасибо
-------- Код jQuery --------------
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
});
----обновление----
Теперь я получил образование себя достаточно, чтобы понять причину этой проблемы - но нет простого решения.Причина в том, что IE7 и 8 автоматически блокируют загрузки, которые запускаются из непользовательских событий. Таким образом, событие onclick запустит загрузку, но не скрипт jQuery. Все еще ищу обходной путь.