Печать скрытого iFrame в IE - PullRequest
       13

Печать скрытого iFrame в IE

8 голосов
/ 11 августа 2009

Это решение отлично работает в Firefox 3.0+, но IE8 / 7 просто печатает всю страницу, а не конкретный iframe.

Эта функция вызывается при нажатии на ссылку для печати:

var printfunc= function(){
  var url = http://someurl.aspx;
  //This iFrame has style="visibility: hidden; position: absolute; left: -9000px;"
  var printIFrame = GetObj('PrintIFrame');
  printIFrame.src = url;
}

aspx, который загружается в скрытый iframe, вызывает функцию печати в обработчике события onload:

<body onload="PrintJS.Print();">

Функция печати:

 this.Print = function(){
      self.focus();
      self.print();
      return false;
 }

Я также пробовал это с "окном" вместо "себя". Оба решения отлично работают в FF, но IE, похоже, не дает правильного определения. Какие-нибудь мысли? Кросс-браузерное решение было бы здорово! Кроме того, я бы предпочел использовать стили печати CSS, но содержимое, которое я печатаю, отличается от содержимого на странице, поэтому необходимо загружать HTML в скрытый iframe.

Ответы [ 3 ]

20 голосов
/ 12 августа 2009

Решение: в IE iframe с видимостью: hidden; заставляет браузер печатать родительский. Изменение стилей на высоту: 0px; ширина: 0px; исправляет эту проблему.

2 голосов
/ 12 августа 2009

Родительский документ:

<!doctype html>
<html>
    <head>
        <script> 
        function printIframe(iframe_id) { 

            if (navigator.appName.toUpperCase() == 'MICROSOFT INTERNET EXPLORER') { 
                document.frames[iframe_id].focus(); 
                document.frames[iframe_id].print(); 
            } else { 
                window.frames[iframe_id].focus(); 
                window.frames[iframe_id].print(); 
            } 
        } 
        </script> 
    </head>
    <body>
        <a href="javascript:printIframe('printMe');">Print the iframe.</a> 
        <iframe id="printMe" src="iframe.html"></iframe>
    </body>
</html>

документ iframe:

<!doctype html>
<html>
    <head></head>
    <body>
        <p>Print this.</p>
    </body>
</html>

По ссылке ниже: http://www.eggheadcafe.com/PrintSearchContent.asp?LINKID=449

0 голосов
/ 11 августа 2009

Попробуйте document.parentWindow.print (); вместо self.print () ...

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