Печать динамического контента с помощью JavaScript - PullRequest
0 голосов
/ 18 августа 2011

Проблема

У нас есть страница с формой.
Пользователь заполняет форму и отправляет ее.
Мне нужно распечатать страницу с данными из формы и некоторым другим содержимым.

Код # 1

$(document).ready(function($){
 $('input[name=sumb_but]').bind('click', function(e){
  e.preventDefault();
  var print_text = "<p>Test " + $('#form').serialize() + "</p>";
  var newWin = window.open('','printWindow','Toolbar=0,Location=0,Directories=0,Status=0,Menubar=0,Scrollbars=0,Resizable=0');
  newWin.document.body.innerHTML = print_text;
  newWin.print();
  });
});

Круто, , но :

  1. Мне нужны конкретные css
  2. Окно печати появляется перед загрузкой содержимого ... ooops

Ok!

Код # 2

$(document).ready(function($){
 $('input[name=sumb_but]').bind('click', function(e){
  e.preventDefault();
  var print_text = "<!DOCTYPE html PUBLIC '-//W3C//DTD XHTML 1.0 Transitional//EN' 'http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd'> <html xmlns='http://www.w3.org/1999/xhtml'> <head> <meta http-equiv='Content-Type' content='text/html; charset=windows-1251' /> <title>Оформление доверенности (простая письменная форма)</title> <link rel='stylesheet' type='text/css' href='/css/print_forms/warrant.css'> </head> <body> <p>Test " + $('#form').serialize() + "</p></body><script type='text/javascript'>window.print();</script></html>";
  var newWin = window.open('','printWindow','Toolbar=0,Location=0,Directories=0,Status=0,Menubar=0,Scrollbars=0,Resizable=0');
  newWin.document.write(print_text);
  });
});
  1. document.write - в противном случае css не загружается
  2. В дополнение к содержимому добавлено "window.print ()"

, который отлично работает во всех браузерах, но не в IE - окна с загрузкой контента успешно без диалогового окна печати.Мне нужна помощь!
ps
CSS с media = "print" - по некоторым причинам не очень хорошее решение для этого случая.

1 Ответ

0 голосов
/ 18 августа 2011
$(document).ready(function($){
 $('input[name=sumb_but]').bind('click', function(e){
  e.preventDefault();
  var print_text = "<p>Test " + $('#form').serialize() + "</p>";
  var newWin = window.open('','printWindow','Toolbar=0,Location=0,Directories=0,Status=0,Menubar=0,Scrollbars=0,Resizable=0');
  newWin.document.body.innerHTML = print_text;
  newWin.document.body.onload = function() { newWin.print(); }   

  });
});

это может помочь

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...