Хобрук: Ваш путь к мастерству в программировании

window.print не работает в Firefox

function CallPrint() {
        var prtContent = document.getElementById('<%= pnlDelete.ClientID %>');
        var winPrint = window.open('', '', 'left=0,top=0,width=800,height=600,toolbar=0,scrollbars=0,status=0');
        winPrint.document.write("<h3>Summary</h3><br />" + prtContent.innerHTML);
        winPrint.document.close();
        winPrint.focus();
        winPrint.print();
        winPrint.close();
    }

У меня есть потребность, когда я должен распечатать содержимое div. Я использую приведенный выше код для этого. Он отлично работает в IE, но ничего не делает в Firefox. Я пропустил что-то здесь, что нужно сделать в Firefox?


Ответы:


1

Вместо того, чтобы открывать новое окно без какого-либо URL-адреса, я открыл эту страницу в окне и получил доступ к содержимому pnlSummary из открытого окна через объект window.opener —

function CallPrint() {
    var winPrint = window.open('Print.aspx', '', 'left=0,top=0,width=800,height=600,toolbar=0,scrollbars=0,status=0');
}

На странице Print.aspx я использовал эту функцию —

function Print() {
    var prtContent = "<h3>Summary</h3>" + window.opener.document.getElementById('ctl00_cphContent_pnlSummary').innerHTML;
    document.getElementById("printDiv").innerHTML = prtContent;
    window.print();
    window.opener.focus();
    window.close(); }

и вызвал его при загрузке тела.

<body onload="Print();">
    <form id="form1" runat="server">
    <div id="printDiv">
    </div>
    </form>
</body>

Это отлично работает как в IE и Фаерфокс.

12.01.2010
  • Извините? какой способ используется для решения проблемы? вы не выбрали ответ. (например, ваш ответ должен был быть комментарием, добавленным к правильному ответу, который дал другой пользователь... и пометить его как правильный) 22.03.2010
  • ни один из предоставленных ответов не помог мне решить мою проблему, я сам работал над этим между ними и нашел решение, которое я разместил в блоге, предоставил ссылку здесь и пометил его как ответ. 29.03.2010
  • Подумайте о том, чтобы добавить больше информации в этот ответ, чтобы людям не приходилось покидать SO, чтобы получить необходимую им информацию. 21.07.2011

  • 2

    Используйте функцию setTimeout() для загрузки страницы. Пример приведен ниже по ссылке.

    http://oraclehappy2help.blogspot.in/2012/09/child-window-printing-problem-solution.html

    15.09.2012
  • Хотя эта ссылка может ответить на вопрос, лучше включить сюда основные части ответа и предоставить ссылку для справки. Ответы, содержащие только ссылки, могут стать недействительными, если связанная страница изменится. 15.09.2012
  • Вместо использования windows.print(); используйте var t = setTimeout (function () {win.window.print ();}, 5000); если у вас медленное соединение, увеличьте время. Я думаю, это решит вашу проблему 18.09.2012

  • 3

    Хм... ваш код, похоже, отлично работает для меня в Firefox 3.5 (Windows). Возможно, что-то не так с вашим pnlDelete.ClientID? Ваш код JavaScript хорошо отображается на странице?

    В любом случае, я предлагаю вам использовать jQuery + плагин для печати, например этот.

    04.01.2010
  • +1, потому что я не хочу изобретать велосипед. Используйте библиотеки, чтобы облегчить себе жизнь. 16.03.2012

  • 4

    Убедитесь, что на вашей панели что-то есть. Я предполагаю, что prtContent не определено

    Попробуй это:

    function CallPrint() {
        var prtContent = document.getElementById('<%= pnlDelete.ClientID %>');
    
        if (prtContent) {
            var winPrint = window.open('', '', 'left=0,top=0,width=800,height=600,toolbar=0,scrollbars=0,status=0');
            winPrint.document.write("<h3>Summary</h3><br />" + prtContent.innerHTML);
            winPrint.document.close();
            winPrint.focus();
            winPrint.print();
            winPrint.close();
        }
        else {
            alert('No summary available for printing');
        }
    }
    
    07.01.2010

    5

    вы можете использовать настройку принтера JS https://addons.mozilla.org/en-us/firefox/addon/js-print-setup/"

    что такое Fire fox Зависимый аддон самый полезныйladdon В веб-приложении Кисок в Firefox для выбора принтера

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

    function EB_Print(printType) {
    	try{
    		var printerType = printType; // type of the Print Code : network 
    		// Default Printer Configuring
    		var Default_printer = "Canon MG2500 series";
    		
    		/** local Printer configuring via Network
    		 ** Config teh Local server use \\\\ to get \\ 
    		 **/
    		var Organizer_Printer = "\\\\network\\Canon LBP2900";
    		
    		jsPrintSetup.setPrinter(Default_printer);
    		jsPrintSetup.setSilentPrint(true);// withoud dialog 
    		
    		/** alert(jsPrintSetup.getPrintersList()); // Debugger for the attached Printers list
    		 	alert(jsPrintSetup.getPrinter());   // get the set printer Option
    		**/
    	// id network is selected It will print the page in network
    		if(printerType == 'network'){
    			jsPrintSetup.setPrinter(Organizer_Printer);
    		}
    		 jsPrintSetup.print(); // Print the page
    		 
    		
    	}catch (e) {
    		// TODO: handle exception
    	}
    	
    }

    28.08.2015

    6

    вы можете попробовать плагин jquery...

    http://plugins.jquery.com/project/PrintArea

    15.04.2010
    Новые материалы

    #093 | Моделирование вспышки эпидемии с помощью JavaScript — Часть 3
    TLDR: Я сделал симуляцию вспышки эпидемии, в которую можно поиграть здесь . Мой холст, моя сцена Мой HTML — это всего лишь один div с классом stage, и вот как я настроил на нем свой объект..

    numberToString.js (8kyu 16)
    Алгоритм кодовых войн Проблема Нам нужна функция, которая может преобразовать число в строку. 숫자를 문자열로 변환하는 함수를 작성해라. Решение 01 function numberToString(n) { return n.toString(); }..

    Лучшие практики для быстрого изучения языка программирования
    Изучение языка программирования может быть сложной задачей, но при правильном подходе определенно возможно быстро выучить язык программирования. Хорошее понимание языка программирования может..

    Использование данных из Adobe Analytics в предложениях Adobe Target
    Я уверен, что все видели эти всплывающие окна в интернет-магазинах, которые говорят что-то вроде « 15 человек просматривают этот товар прямо сейчас! » или « 105 человек из Мичигана купили это..

    Машинное обучение и его набор данных в CreateML
    Когда я впервые начал учиться в Apple Developer Academy, у меня был момент неуверенности в моем интересе к машинному обучению. Нужно ли мне сменить карьеру моей мечты с специалиста по данным на..

    Обучение требует воли
    Недавно я прочитал отличную статью Шейна Легга и Джоэла Венесса из DeepMind. http://arxiv.org/pdf/1109.5951v2.pdf В статье «универсальный интеллект» агента π определяется как: Поэтому..

    Безопасность по дизайну делает всех счастливыми
    Заложенная безопасность делает всех счастливыми Если вы никогда не смотрели Louis C.K. рассказать о том, как Все удивительно, и никто не счастлив ; побаловать себя. Сделайте это прямо..