We help IT Professionals succeed at work.

Unable to call Print Dialog in Firefox, Works in IE

Robert Treadwell
on
I have a jquery ui dialog that appears to client with Printer Friendly content.  The dialog box contains two buttons, 'Print' and 'Cancel'.  The Print button contains the standard javascript command to call the print dialog button.  This function works in IE but not in Firefox.  What needs to be done differently for?

see code:
    //Build function to handle Printable Pages
    function openPrintDialog(divName, iframeID, ajaxUrl, displayTitle, defaultWidth, defaultHeight, openStatus, page, iframeWidth) {
        //this dialog is used to show the printable version of the Client Record
        var $dialog = $('<div id="' + divName + '"></div>')
                .html('<iframe id="' + iframeID + '" style="border: 0px; " src="' + page + '" width="' + iframeWidth + '" height="' + defaultHeight + '"></iframe>')
                .dialog({
                    autoOpen: openStatus,
                    title: displayTitle,
                    width: defaultWidth,
                    height: defaultHeight,
                    modal: true,

                    //Define Buttons
                    buttons: {
                        Print: function () {
                            var objFrame = window.frames[iframeID];
                            objFrame.focus();
                            objFrame.print();

                            //Now close dialog
                            $(this).dialog('close');
                        },
                        Close: function (ev, ui) {
                            clearPrintIframe('#' + iframeID);
                            $(this).dialog('close');
                        }
                    }
                });                     //end of Dialog w/options
        $dialog.dialog('open');

    };  //End of openPrintDialog Function
Comment
Watch Question

Managing Director
Commented:
Answered this one my self.  Changed the Print section to determine the browser type and then changing print functionality to fit the browser type.

                        Print: function () {
                            var nav = navigator.appName;
                            if (nav == "Microsoft Internet Explorer") {
                                var objFrame = window.frames[iframeID];
                                objFrame.focus();
                                objFrame.print();
                            } else if (nav == "Netscape") {
                                $('#' + iframeID)[0].focus();
                                $('#' + iframeID)[0].contentWindow.print();
                            }

Explore More ContentExplore courses, solutions, and other research materials related to this topic.