Задать вопрос
ILoveYAnny
@ILoveYAnny

Почему переменная в функции становится undefined?

Здравствуйте, я просто недоумеваю над поведением скрипта, у меня есть скрипт скачивания Blob объекта, с ним всё отлично:
var filename = "File01";
var i = "1";
var finalURL = "http://site.com/"+i+".jpeg";
                        window.URL = window.URL || window.webkitURL;  // Take care of vendor prefixes.
                        
                        var xhr = new XMLHttpRequest();
                        xhr.open('GET', finalURL, true);
                        xhr.responseType = 'blob';
                        
                        xhr.onload = function(e) {
                          if (this.status == 200) {
                            var blob = this.response;
                            var blobSave = new Blob([blob]);
                        	saveAs(blobSave, filename);
                          }
                        };
                        
                        xhr.send();


Теперь мне нужно выполнить этот скрипт, по нажатию на iFrame (в любую область), я использую библиотеку https://github.com/vincepare/iframeTracker-jquery/... (На основе события blur)
$('iframe').iframeTracker({
        	blurCallback: function(){
                var filename = "File01";
                var i = "1";
                var finalURL = "http://site.com/"+i+".jpeg";
                        window.URL = window.URL || window.webkitURL;  // Take care of vendor prefixes.
                        
                        var xhr = new XMLHttpRequest();
                        xhr.open('GET', finalURL, true);
                        xhr.responseType = 'blob';
                        
                        xhr.onload = function(e) {
                          if (this.status == 200) {
                            var blob = this.response;
                            var blobSave = new Blob([blob]);
                        	saveAs(blobSave, filename);
                          }
                        };
                        
                        xhr.send();
                }
    });


И вот тут начинается просто чтот-то непонятное. Вот в этом месте:
xhr.onload = function(e) {
                          if (this.status == 200) {
                            var blob = this.response;
                            var blobSave = new Blob([blob]);
                        	saveAs(blobSave, filename);
                          }
};

filename становится undefined, то есть переменная не предаётся в функцию. В Фаерфоксе всё нормально, когда консоль Хрома открыта (! проверено раз 100) тоже всё нормально. Пробовал и в начале документа объявить переменную var filename, что бы она стала глобальной, все ровно она undefined. В чём может быть дело, у кого-нибудь есть мысли?
  • Вопрос задан
  • 204 просмотра
Подписаться 1 Средний 2 комментария
Решения вопроса 1
ILoveYAnny
@ILoveYAnny Автор вопроса
Проблема была в кешировании запроса, второй раз браузер брал файл не через мой скрипт, а из кеша.
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 2
Morfeey
@Morfeey
var filename = "File01; // ковычка не закрыта
Ответ написан
@pool
xhr.onload = function(f) {
                          if (this.status == 200) {
                            var blob = this.response;
                            var blobSave = new Blob([blob]);
                        	saveAs(blobSave, f);
                          }
                        }(filename);
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы