Я пытаюсь распечатать asp.net updatePanel, когда пользователь нажимает CTRL + P, но, поскольку __dopostback запускает обратную связь, которая обновляет панель, предварительный просмотр печати иногда показывает устаревший контент или загружающий спиннер вместо Обновленный контент. Я попытался использовать sys.webforms.pagerequestmanager.getinstance (). Add_endrequest () для обнаружения, когда обновление завершено, а затем вызов window.print () , но он все еще иногда печатает до того, как страница полностью полностью Обновлено. Добавление settimeout () и requestAnimationFrame () немного помог, но проблема сохраняется, и мне нужен надежный способ, чтобы убедиться, что предварительный просмотр печати всегда показывает последнее содержание обновления.
Код: Выделить всё
document.addEventListener("keydown", function (event) {
if (event.ctrlKey && event.key === "p") {
event.preventDefault();
sessionStorage.setItem("printTriggered", "true");
__doPostBack('', '');
}
});
Sys.WebForms.PageRequestManager.getInstance().add_endRequest(function () {
if (sessionStorage.getItem("printTriggered") === "true") {
sessionStorage.removeItem("printTriggered");
var loadingElement = document.getElementById("loadingComponent"); //optional
if (loadingElement) {
loadingElement.style.display = "none";
}
setTimeout(() => {
requestAnimationFrame(() => {
window.print();
});
}, 500);
}
});
Как я могу убедиться, что wind.print () выполняется только после того, как контент UpdatePanel полностью обновлен, включая обработку бэкэнд, поэтому предварительный просмотр печати никогда не показывает устаревший контент? /п>
Подробнее здесь:
https://stackoverflow.com/questions/794 ... asp-net-we