2014-01-21 3 views
4

Я хочу распечатать страницу, не открывая ее во всех основных браузерах. (Safari, IE, Firefox, Chrome и Opera)Распечатайте внешнюю страницу без ее открытия

Я попробовал, но не работает на светлячок (Ошибка: Доступ запрещен доступ к 'Печать' собственности):

<!DOCTYPE html> 
    <html> 
     <head> 
      <title>Test</title> 
      <meta content="text/html; charset=UTF-8" http-equiv="Content-Type"/> 
      <link rel="alternate" media="print" href="print.php"> 
      <script type="text/javascript"> 
       function impression() { 
       window.frames[0].focus(); 
       window.frames[0].print(); 
       } 
      </script> 
     </head> 
     <body> 


      <iframe height="0px" src="print.php" id="fileToPrint" style="visibility: hidden"></iframe> 
      <a href="javascript:impression()">Imprimer</a> 
     </body> 
    </html> 

Этот код работает на Chrome ,

Я хочу, чтобы все это говорило обо всех браузерах, но я не знаю, как это сделать.

Есть ли другой способ сделать это?

+1

, которые могут вам помочь -> http://stackoverflow.com/questions/10165821/print-a-pdf-iframe-in-firefox – mortiped

+0

Для этого нет кросс-браузерного решения, в некоторых браузерах оно будет работать с iFrame, в других вам может понадобиться новое окно, и если я правильно помню, ни одно из вышеперечисленных действий не работало в одном из пяти браузеров. – adeneo

+0

Попробуйте заменить 'window.frames [0]' на 'document.getElementById ('fileToPrint'). ContentWindow' и посмотреть, работает ли это в firefox. – adeneo

ответ

1

Создайте iframe, спрячьте его и вызовите надлежащие функции печати. ExecCommand должен работать для всех версий IE.
Имейте в виду: $ .browser не будет работать для более новых версий jQuery и его следует избегать. Используйте свой предпочтительный способ обнаружения функций.

var ifr = createIframe(); 
ifr.hide(); 

if ($.browser.msie) { 
    ifr.contentWindow.document.execCommand('print', false, null); 
} else { 
    ifr.contentWindow.focus(); 
    ifr.contentWindow.print(); 
} 

Это было разработано для IE, FF и Chrome. Я понятия не имею, насколько хорошо это будет работать для Safari и Opera, но это может дать вам некоторые идеи.

Редактировать: как правильно указали adeneo, $ .browser устарел и его следует избегать. Я обновил свое заявление. Я оставлю свой код нетронутым, так как он все еще выражает правильное намерение.

+0

Это не «iffy», '$ .browser' устарел и удален из jQuery – adeneo

0

Вы можете попробовать этот код, но это Javascript;

<script language="JavaScript"> 
var gAutoPrint = true; // Tells whether to automatically call the print function 

function printSpecial() 
{ 
if (document.getElementById != null) 
{ 
var html = '<HTML>\n<HEAD>\n'; 

if (document.getElementsByTagName != null) 
{ 
var headTags = document.getElementsByTagName("head"); 
if (headTags.length > 0) 
html += headTags[0].innerHTML; 
} 

html += '\n</HE>\n<BODY>\n'; 

var printReadyElem = document.getElementById("printReady"); 

if (printReadyElem != null) 
{ 
html += printReadyElem.innerHTML; 
} 
else 
{ 
alert("Could not find the printReady function"); 
return; 
} 

html += '\n</BO>\n</HT>'; 

var printWin = window.open("","printSpecial"); 
printWin.document.open(); 
printWin.document.write(html); 
printWin.document.close(); 
if (gAutoPrint) 
printWin.print(); 
} 
else 
{ 
alert("The print ready feature is only available if you are using an browser. Please update your browswer."); 
} 
} 

</script> 
+0

Не работает для файла php. – Lynxi

Смежные вопросы