Создайте iframe при нажатии кнопки / ссылки и добавьте это в тело.
$('<iframe />')
.attr('src', url)
.attr('id','iframe_download_report')
.hide()
.appendTo('body');
Создайте iframe с задержкой и удалите его после загрузки.
var triggerDelay = 100;
var cleaningDelay = 20000;
var that = this;
setTimeout(function() {
var frame = $('<iframe style="width:1px; height:1px;" class="multi-download-frame"></iframe>');
frame.attr('src', url+"?"+ "Content-Disposition: attachment ; filename="+that.model.get('fileName'));
$(ev.target).after(frame);
setTimeout(function() {
frame.remove();
}, cleaningDelay);
}, triggerDelay);
Во втором случае, когда вы не используете анонимное пространство имен, если какой-либо другой файл cpp объявляет extern int var;
, он сможет использовать ваш Переменная.
Если вы используете анонимное пространство имен, то во время связывания другой файл cpp сгенерирует неопределенную ошибку ссылки.
В дополнение к причинам, указанным Николаем и другими, если вы не используете анонимное пространство имен, вы можете получить конфликты именования с другими глобальными данными. Если вы используете анонимное пространство имен, то вместо этого вы затеняете глобальные данные.
From cprogramming.com: "Внутри пространства имен вы можете быть уверены, что глобальные имена не будут конфликтовать, поскольку имена функций каждого пространства имен имеют приоритет над именами внешних функций"
.Два пункта:
extern int var;
может получить доступ к вашей переменной, если это не так в безымянном пространстве имен. int var
, у вас будет несколько определений этой переменной. Как указано в стандарте:
[...] все вхождения unique в единицы перевода заменяются на тот же идентификатор и этот идентификатор отличается от всех других идентификаторов вся программа.
Вторая версия определена в глобальном пространстве имен - другие файлы .cpp могут получить к ней доступ, объявив
extern int var;
и даже если они этого не делают, если кто-то другой использует то же самое name в глобальном пространстве имен, вы получите ошибку ссылки (многократно определенный символ).
Во втором случае другие файлы .cpp
могут обращаться к переменной как:
extern int var;
var = 42;
, и компоновщик найдет ее. В первом случае имя переменной искажено без всякой причины :), поэтому это невозможно.