У меня есть внешний интерфейс html / javascript, который использует AJAX-запрос JQuery для отправки XML-файла, содержащего введенные пользователем данные формы, в бэкэнд-приложение, которое, в свою очередь, создает PDF-файл из этой информации.В ответ веб-интерфейс получает UUID, который затем использует в URL-адресе для загрузки сгенерированного PDF.
Это прекрасно работает в Firefox и Safari, но блокируется защитой Internet Explorer 8 от загрузок по сценарию.Указание IE8 загрузить файл через порожденную информационную панель приводит к перезагрузке страницы, которая закрывает весь введенный пользовательский контент.
Одиночное событие onMouseUp в элементе esque-button запускает генерациюXML для отправки, отправка XML, получение ответа, а затем инициирование загрузки с помощью установки URL-адреса в объекте window.location.Разделение этой загрузки на другую кнопку (при которой одна генерирует и отправляет xml и извлекает UUID, а другая только инициирует загрузку с использованием URL-адреса, созданного из UUID) обходит информационную панель, но разрушает простоту и интуитивность интерфейса.
Вот соответствующие функции javascript:
function sendXml()
{
var documentXml = generateDocumentXml();
var percentEncodedDocumentXml = escape(DocumentXml);
var url = "generate?document=" + percentEncodedDocumentXml;
$.ajax({
url: url,
type: "GET",
dataType: "xml",
success: function (xml)
{
var uuid = $(xml).find('uuid').text();
getPdf(uuid);
},
error: function (xhr)
{
alert("There was an error creating your PDF template");
}
});
}
function getPdf(uuid)
{
var url = "generate?get-pdf=" + uuid;
window.location = url;
}
Я жду предложений о том, как лучше всего решить эту проблему.Мое первое предпочтение состояло бы в том, чтобы информационная панель вообще не вмешивалась, но сведение к минимуму ее вреда было бы существенным улучшением по сравнению с текущей ситуацией.Если бы он не мог перезагрузить и стереть интерфейс веб-интерфейса и фактически перейти к загрузке файла, когда пользователь выбирает «Загрузить файл ...» через меню информационной панели, это поможет.