IE8 blijft hangen na het indrukken van de knop "afdrukken" in het dialoogvenster voor het afdrukken van browsers wanneer inhoud wordt weergegeven met javascript via een iframe

Ik werk nu een paar weken aan dit probleem en heb dit niet kunnen oplossen. Het probleem wordt alleen gemeld door een kleine subset van IE8-gebruikers. Ik heb geprobeerd het probleem te reproduceren door een VM van Windows XP, IE8 (rapport met dezelfde versie van gebruikers) uit te voeren en de beveiligingsinstellingen van de browser te synchroniseren. Desondanks kan ik het probleem niet voor mezelf reproduceren. Het zou geweldig zijn om het te reproduceren, maar uiteindelijk gaat het er alleen maar om de oorzaak van het probleem te achterhalen.

De manier waarop de afdrukfunctie werkt, is:

  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/

De gebruiker wordt vervolgens gevraagd om een ​​afdrukdialoog van IE. Wanneer de gebruiker op de knop "afdrukken" klikt, hangt IE vast en kan alleen worden afgesloten door het proces te beëindigen. Als de gebruiker op "annuleren" klikt, blijft IE niet hangen en kan de gebruiker doorgaan met zijn of haar bedrijf.

De gebruiker kan de standaard afdrukfunctionaliteit gebruiken om de hele pagina probleemloos af te drukken. Alleen als ze mijn javascript-gebaseerde printfunctie gebruikten, bleef de browser hangen.

Ik heb de gebruiker no-addon IE8 laten uitvoeren, in hun Windows-gebeurtenislogboek laten kijken en enkele veelvoorkomende probleemfuncties uitschakelen in IE8.

Ik ben echt stumped over waar in het proces deze fout kan optreden. Het lijkt erop te wijzen naar mijn JavaScript maar het stumped me dat de fout optreedt nadat op de knop voor het afdrukken van de afdrukknop voor de browser is gedrukt. Ik zou verwachten dat de fout optreedt voordat de functie window.print() wordt aangeroepen in het gefocuste iframe.

Alle hulp zou zeer op prijs worden gesteld, omdat deze bug me behoorlijk wat frustratie heeft bezorgd.

Bedankt.

BEWERK----------------------------------------

Ik gebruik de standaard jQuery-afdrukbibliotheek hierboven met een enigszins aangepaste _getMarkup-functie zoals hieronder te zien is:

    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
"Wanneer de gebruiker op de knop" afdrukken "klikt, blijft IE hangen en kan deze alleen worden afgesloten door het proces te beëindigen." - Dit lijkt echt een OS-probleem. En als u het probleem niet kunt reproduceren of een code kunt geven om te beoordelen, is er weinig dat we kunnen doen, behalve dat u tips voor het oplossen van problemen geeft ... dan zijn we van het onderwerp verwijderd.
toegevoegd de auteur Sparky, de bron
Ik dacht iets in die zin, maar het feit dat ze gewoon naar mijn pagina kunnen gaan en "bestand -> afdrukken" kunnen doen en dat het goed werkt, doet me denken dat het iets te maken heeft met het JavaScript of mijn afdrukproces. Wat betreft het beoordelen van de code, gebruik ik de hierboven genoemde bibliotheek. Ik heb ook de wijzigingen toegevoegd die ik in bovenstaande post heb gemaakt en die zijn redelijk minimaal. Ik zou ook graag tips ontvangen voor het oplossen van problemen, omdat ik het gevoel heb dat ik mijn arsenaal heb versleten.
toegevoegd de auteur Bryce, de bron
Ik had vergelijkbare problemen met een pagina waarop inhoud werd weergegeven in JS, en had CSS die de meeste elementen op de pagina verborg. De pagina was eigenlijk een normale pagina met verschillende CSS. De normale versie werkte goed, maar toen de nieuwe stylesheet werd geïntroduceerd, begonnen de problemen. Dus mijn beste gok was dat de zware CSS verbergen en zware JS (kaart) rendering te veel was voor IE8 om te verwerken.
toegevoegd de auteur Marcus, de bron

Geen antwoorden

0