IE8 зависает после нажатия кнопки «Печать» в диалоговом окне печати браузера при рендеринге содержимого, собранного с помощью javascript через iframe

Я работаю над этой проблемой уже пару недель и не смог ее решить. Проблема заключается только в небольшом подмножестве пользователей IE8. Я попытался воспроизвести проблему, запустив виртуальную машину Windows xp, IE8 (отчет о пользователях той же версии) и синхронизированные настройки безопасности браузера. Несмотря на это, я не могу воспроизвести проблему для себя. Воспроизведение было бы здорово, но в конечном итоге все, что имеет значение, - это открытие источника проблемы.

Способ работы функции печати:

  1. User presses a link on the page which triggers a JavaScript function.
  2. The JavaScript performs some logic to get the content of a subsection of the page (based on which print link was clicked).
  3. "exCanvas elements are set to display:none" because I found that they caused printing bugs. 4.The element is printed using a slightly modified version of "Print Element" found here: http://projects.erikzaadi.com/jQueryPlugins/jQuery.printElement/

Затем пользователю предлагается диалог печати из IE. Когда пользователь нажимает кнопку «print», IE зависает и может быть остановлена ​​только путем завершения процесса. Если пользователь нажимает «отменить», IE не зависает, и пользователь может продолжить свою деятельность.

Пользователь может использовать функцию печати по умолчанию, чтобы печатать всю страницу без проблем. Только когда они использовали мою функцию печати на основе javascript, зависающую браузером.

У меня был пользователь, который запускает no-addon IE8, просматривает журнал событий Windows и отключает некоторые распространенные проблемы в IE8.

Я очень сильно обеспокоен тем, где эта ошибка может произойти. Кажется, это указывает на мой javascript, но он пьет меня, что ошибка возникает после нажатия кнопки печати диалогов браузера. Я ожидаю, что ошибка произойдет до того, как функция window.print() вызывается на сфокусированном iframe.

Любая помощь будет принята с благодарностью, так как эта ошибка дала мне немного разочарования.

Благодарю.

РЕДАКТИРОВАТЬ----------------------------------------

Я использую стандартную библиотеку jQuery print выше со слегка настраиваемой функцией _getMarkup, как показано ниже:

    function _getMarkup(element, opts) {
    var $element = $(element);
    var elementHtml = _getElementHTMLIncludingFormElements(element);

    var html = new Array();
    html.push('<html><head><title>' + opts["pageTitle"] + '</title>');
    if (opts["overrideElementCSS"]) {
        if (opts["overrideElementCSS"].length > 0) {
            for (var x = 0; x < opts["overrideElementCSS"].length; x++) {
                var current = opts["overrideElementCSS"][x];
                if (typeof (current) == 'string')
                    html.push('<link type="text/css" rel="stylesheet" href="' + current + '" >');
                else
                    html.push('<link type="text/css" rel="stylesheet" href="' + current["href"] + '" media="' + current["media"] + '" >');
            }
        }
    }
    else {
        $("link", document).filter(function() {
            return $(this).attr("rel").toLowerCase() == "stylesheet";
        }).each(function() {
            html.push('<link type="text/css" rel="stylesheet" href="' + $(this).attr("href") + '" media="' + $(this).attr('media') + '" >');
        });
    }
    //Ensure that relative links work
    html.push('');
    html.push(hieviews.getPrintCSS($("head").html()));
    html.push('</head><body style="' + opts["printBodyOptions"]["styleToAdd"] + '" class="' + opts["printBodyOptions"]["classNameToAdd"] + '">');

    var contentStr = $('<div></div>');
    $(contentStr).append($('#disclaimer').html());
    $(contentStr).append($('#nav').html());
    $(contentStr).append("

"+$(".title",$(element).parent().parent().children(":first")).text() +"

");
    $(contentStr).append('<div>' + elementHtml + '</div>');

    var refTable = "";
    var total = $(".show-tooltip-text, .hidden_report",contentStr).each(function(index){
        if(index == 0){
            refTable += "

Reference Table

<table class=\"dataTable\" id=\"cite\"><thead><tr><th>ref</th><th>Content</th></tr></thead><tbody>";
        }
        //if($(this).is(":hidden")){
        if($(this).css("display") != "block"){
            $(this).parent().append("*ref: #"+index+"");
            refTable += "<tr><td>"+index+"</td><td>"+$(this).html()+"</td></tr>";
        }
        if(index == total){
            refTable += "</tbody></table>";
        }
    }).length;
    $(contentStr).append(refTable);
    html.push($(contentStr).html());

    html.push('<script type="text/javascript">function printPage(){focus();window.print();' + ((!$.browser.opera && !opts["leaveOpen"] && opts["printMode"].toLowerCase() == 'popup') ? 'close();' : '') + '}<\/script>');
    html.push('</body></html>');
    return html.join('');
};
1
"Когда пользователь нажимает кнопку" print ", IE зависает и может быть остановлена ​​только путем завершения процесса." - Это действительно похоже на проблему с ОС. И если вы не можете воспроизвести проблему или предоставить какой-либо код для обзора, мы мало что можем сделать, кроме как дать вам рекомендации по поиску и устранению неполадок ... тогда мы не в теме.
добавлено автор Sparky, источник
Я думал что-то в этом роде, но тот факт, что они могут просто перейти на мою страницу и пойти «file -> print», и это прекрасно работает, и мне кажется, что это связано с JavaScript или моим процессом печати. Что касается обзора кода, я использую упомянутую выше библиотеку. Я также добавил изменения, которые я сделал для вышеупомянутого сообщения, которые довольно минимальны. Я также приветствую любые советы по устранению неполадок, поскольку я чувствую, что измотал свой арсенал.
добавлено автор Bryce, источник
У меня были аналогичные проблемы со страницей, где контент был представлен в JS, и CSS, который скрывал большинство элементов на странице. Страница была в основном обычной страницей с разными CSS. Нормальная версия работала нормально, но как только появилась новая таблица стилей, проблемы начались. Поэтому я предпочел, что тяжелый CSS-hiding & heavy JS (map) рендеринг был слишком большим для IE8 для обработки.
добавлено автор Marcus, источник

Ответов нет

0
JavaScript Jobs — чат
JavaScript Jobs — чат
8 336 участник(ов)

JavaScript Jobs — чат для поиска работы и людей Правила оформления: https://teletype.in/@telegram-ru/r1WQe5F1m См. также: @mobile_jobs, @devops_jobs, @nodejs_jobs, @react_js, @angular_ru, @js_ru

JavaScript.ru
JavaScript.ru
7 932 участник(ов)

Сообщество сайта JavaScript.ru в Slack.

pro.js
pro.js
4 675 участник(ов)

Про JavaScript и NodeJS Invite: https://t.me/joinchat/Be4rsT5Rsgq30DHutjxXgA Правила: http://telegra.ph/ru-chat-rules-06-19 Вакансии только с ЗП, не чаще раза в неделю.

Верстка сайтов HTML/CSS/JS/PHP
Верстка сайтов HTML/CSS/JS/PHP
3 439 участник(ов)

Правила группы: напишите !rules в чате. Группа Вк: vk.com/web_structure Freelancer: @web_fl Веб Дизайн: @dev_design Маркетолог: @topmarkening Автор: @M_Boroda

JavaScript — русскоговорящее сообщество
JavaScript — русскоговорящее сообщество
3 269 участник(ов)

Рекомендуем сразу отключить уведомления Правила: https://rudevs.network/ByaMH6un7 См. также: @js_noobs_ru, @nodejs_ru, @typescript_ru, @react_js, @electron_ru Вакансии и поиск работы: @javascript_jobs

JavaScript Noobs — сообщество новичков
JavaScript Noobs — сообщество новичков
2 484 участник(ов)

Чат для новичков

javascript_ru
javascript_ru
915 участник(ов)

Сообщество любителей самого популярного языка программирования в мире. Чат основан в 2009 году. Логи: https://goo.gl/9EOeM7 Поддержка бота: @chat_linker (ссылка на репу внутри) Вам будут интересны @frontend_ru и @css_ru

jsChat
jsChat
603 участник(ов)

Чат посвященный программированию на языке javaScript Перед отправкой ссылки на Ваш контент посоветуйтесь с админом Все ссылки удаляются ботом автоматически

JavaScript for Zombies Chat
JavaScript for Zombies Chat
492 участник(ов)

Чат про JavaScript для настоящих zombie! Вход строго по приглашениям! Ссылка для строгих приглашений: https://t.me/joinchat/AAMBHz3Uyr0tuZ7VaB029g

All That JS
All That JS
417 участник(ов)

JS на русском