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