Я нашел метод, который работает для печати только содержимого IFrame, даже если клиент использует элемент меню печати браузера, но я не могу сказать вам, почему это так.Хитрость заключается в том, чтобы установить фокус на IFrame перед печатью.Таблица стилей печати также необходима, хотя javascript, похоже, и есть то, что происходит, когда пользователь печатает из меню.Вам нужны обе части, чтобы это работало.Он печатает весь документ, даже если он больше, чем IFrame!Я успешно протестировал его в IE8, Firefox 5 и 6 и Safari 3.2.
Я использую этот скрипт в качестве обработчика события onclick для кнопки или ссылки «напечатать меня»:
<script type="text/javascript" language=JavaScript>
function CheckIsIE()
{
if (navigator.appName.toUpperCase() == 'MICROSOFT INTERNET EXPLORER')
{ return true; }
else
{ return false; }
}
function PrintThisPage()
{
if (CheckIsIE() == true)
{
document.content.focus();
document.content.print();
}
else
{
window.frames['content'].focus();
window.frames['content'].print();
}
}
</script>
Данный IFrame назван и идентифицирован как контент.Моя кнопка находится в div, называемом print_iframe. Обнаружение браузера очень важно!Затем я использую таблицу стилей только для печати, связанную так:
<link href="/styles/print.css" rel="stylesheet" type="text/css" media="print" />
@charset "utf-8";
/* CSS Document */
body { background:none; }
#left { display:none; }
#main img { display:none; }
#banner
{
display:none;
margin-top:0px;
padding:0px;
}
#main
{
margin-top:0px;
padding:0px;
}
#print_iframe
{
display:none;
}