Что заставляет IE8 блокировать загрузку некоторых файлов?

Это вызывает некоторое огорчение у моих пользователей 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. Все еще ищу обходной путь.

9
задан Jiminy Cricket 29 March 2012 в 04:09
поделиться