Примечание - this, похоже, документирует ту же проблему, что и в отношении «postMessage», который не определен, но ответа там нет.PDF postMessage не определено
Я новичок в работе с файлами PDF. Я пытаюсь исправить ошибку в существующем приложении. Приложение отображает форму в браузере, позволяет пользователю редактировать, а затем использует метод postMessage JavaScript JavaScript для публикации изменений пользователя на сервере. По какой-то причине объект PDF не имеет метода postMessage метода. Файл pdfObject находится по имени fine и имеет множество свойств (атрибуты - это карта узлов, baseURL - это URL-адрес, используемый пользователем для навигации по PDF, childNodes и contentDocument, существует много методов onXX (например, onBeforeCut, onActivate и т. д.), но myPdfObj.postMessage не определен. PDF отлично отображен и может быть отредактирован, но когда приложение пытается вызвать неопределенный метод postMessage, на экране появляется сообщение об ошибке «ERROR: целевой документ не разглашается». идея, что может идти на
Примечание - похоже, наш перевалочный сайт все еще работает ХОТЯ PostMessage не определено Я понятия не имею, почему Однако локально размещение сайта не работает
Вот немного... больше информации за вопросы, заданные в комментариях:
Я думаю, что у него должна быть функция postMessage, потому что наш код вызывает этот метод, и он нигде не объявлен, и я нахожу данные из сообщений в сети (например, here и here), которые другие называют этим методом для объектов PDF, поэтому я думаю, что это то, что предоставляет Adobe.
Браузер IE II.
Вот код вызывает ошибку - при нажатии на эту кнопку
<button id="useraction_savedraft" onclick="saveDraft();">Save Draft</button>
Этот JavaScript называется:
function saveDraft() {
$('#keepAsDraft').val('true');
sendMessage(["submitForm"]);
}
var pdfObject = null;
function sendMessage(aMessage) {
if (pdfObject == null) {
pdfObject = document.getElementById("pdfForm");
if (typeof(pdfObject) == "undefined" || typeof (pdfObject.postMessage) == "undefined") {
statusErrorMessage("ERROR: Unable to initialize pdfForm. Your browser may not be compatible with PDF inline-editing.");
return;
}
pdfObject.messageHandler = {
onMessage: function(msg) {
if (msg[0]=="saveFdf") {
$("#fdf").val(msg[1]);
$("#entryForm").submit();
}
else if (msg[0]=="saveXFA") {
$("#fdf").val("");
$("#xfa").val(msg[1]);
$("#entryForm").submit();
}
},
onError: function(error, msg)
{
statusErrorMessage("ERROR: " + error.message);
return;
}
};
}
pdfObject.postMessage(aMessage);
}
сценарии, которые запускаются при OnMessage и OnError называются являются JS функции, встроены в сам файл PDF (мы используем стороннюю библиотеку для встраивания скриптов). Эти функции называются myOnMessage и myOnError. Мы также определяем метод myOnDisclose в том же JavaScript, и в конце встроенного сценария, он использует эту логику, чтобы назначить методы MessageHandler контейнера:
var msgHandlerObject = new Object();
msgHandlerObject.onMessage = myOnMessage;
msgHandlerObject.onError = myOnError;
msgHandlerObject.onDisclose = myOnDisclose;
msgHandlerObject.myDoc = this;
this.hostContainer.messageHandler = msgHandlerObject;
Большое спасибо!
Почему, по-вашему, PDF должен иметь функцию postMessage? Не могли бы вы отправить код, вызывающий ошибку? –
PDF-файлы - это их собственная песочница. –
«отображает форму в браузере» - это встроенный браузер в приложении или внешнем браузере. Что это за браузер? Хром? Хром? IE? Fire Fox? – Bigman