#javascript #iframe #download
#javascript #iframe #Скачать
Вопрос:
Привет, ребята, вот такая ситуация:
У меня есть URL, который принимает два параметра и возвращает файл PDF. Я также могу опубликовать форму с двумя входными значениями по этому URL вместо этого.
На другой странице я хочу запустить javascript, который будет отправлять различные комбинации параметров на URL-адрес с помощью GET или POST и возвращать каждый из файлов, связанных с комбинациями параметров.
Основываясь на другом скрипте, который я нашел здесь, я адаптировал его и попробовал этот (анонимный URL):
var first = '503113571';
var second = '2046486463';
var url = 'https://www.domain.com/page';
el = document.createElement( 'div' );
el.setAttribute( "id", "targetdiv" );
document.body.appendChild( el );
function download(first, second)
{
var htm = '<iframe src="' url '?a=' first 'amp;b=' second '"></iframe>';
document.getElementById('targetdiv').innerHTML = htm;
}
download(first, second);
Iframe создается в div, и его атрибут src правильный — если я скопирую и вставлю атрибут src в новое окно, файл загрузится нормально. По какой-то причине, когда этот URL используется в iframe, файл никогда не загружается.
Я использую GreaseMonkey для запуска скрипта на странице, поскольку у нас нет доступа для изменения самих веб-страниц. Скрипт выполняется нормально (поскольку выполняется весь код, iframe создается правильно).
Используя сетевую панель FireBug, после загрузки страницы я не вижу никаких запросов к iframe src.
Есть идеи либо о причине, либо о том, какие шаги я мог бы предпринять, чтобы разобраться в этом? Спасибо!
Комментарии:
1. Какой браузер вы используете? Кажется, это работает для меня в Chrome (за исключением некоторых ошибок в именах переменных в
download
функции и неправильного]
в последней строке)2. Извините, я исправил переменные. Они верны в моем скрипте, но я отредактировал имена переменных (плохо) для анонимности моего клиента. Я использую Firefox 3.6.
Ответ №1:
Несколько вещей:
- Таким образом вы можете выполнить только запрос GET, и вы не используете аргументы, которые вы передали в функцию загрузки.
- Обычно я вставляю код в консоль Firebug, чтобы что-то протестировать.
-
Вы должны иметь возможность просто установить window.местоположение для загрузки файла.
var first = '503113571'; var second = '2046486463'; var url = 'https://www.domain.com/page'; function download(a, b) { window.location = url '?a=' a 'amp;b=' b; } download(first, second);
-
Если вы хотите использовать iframe, это должно работать без риска перехода на другую страницу:
function download(a, b) { var newIFrame = document.createElement("iframe"); newIFrame.src = url '?a=' a 'amp;b=' b; newIFrame.style.display = 'none'; document.body.appendChild(newIFrame); }
Комментарии:
1. Re: ваше первое замечание, я исправил опечатки — извините за это. Я попробую ваши предложения и сообщу об этом. Спасибо!