I nie można odtworzyć problemu z Chrome. Opera jednak nadal drukuje całą zewnętrzną stronę, próbując tylko wydrukować element iframe.
Opracowałem obejście problemu i chociaż działa głównie, nie jest w 100% bezpieczne (między innymi dlatego, że Opera zawija linie do drukowania, nie wiem jak obliczyć prawidłową wysokość w takich przypadkach). Powiedział, że poniższy kod działa co najmniej rozsądne (przy użyciu jQuery dla wygody):
if ($.browser.opera) {
var ifr = $('#youriframe');
var ifrbody = ifr.get(0).contentDocument.body;
var sheet = $([
'<style type="text/css" media="print">',
'body * {',
' display: none;',
'}',
'#youriframe {',
' border: none;',
' display: block;',
' height: ', ifrbody.scrollHeight, 'px;',
' margin: 0px;',
' padding: 0px;',
' width: ', ifrbody.scrollWidth, 'px;',
'}',
'<\/style>'
].join(''));
$('head').append(sheet);
window.print();
sheet.remove();
}
Nadzieja to pomaga.
Od połączonego artykułu wydaje się, że przynajmniej dla Chrome należy mieć powodzenie. Czy element iframe znajduje się w innej domenie? – Paul
Nie. Pochodzi z tej samej domeny. –