Некоторое время назад я создал плагин лайтбокса использование jQuery, который загрузит URL, указанный в ссылке в лайтбокс. Код действительно прост:
$('.readmore').each(function(i){
$(this).popup();
});
и ссылка была бы похожа на это:
<a class='readmore' href='view-details.php?Id=11'>TJ Kirchner</a>
Плагин мог также принять, что аргументы в пользу ширины, высоты, другого URL и большего количества данных прошли.
Проблема, с которой я сталкиваюсь прямо сейчас, печатает лайтбокс. Я настроил его так, чтобы лайтбокс имел кнопку печати наверху поля. Та ссылка открыла бы новое окно и распечатала бы то окно. Этим все управляет плагин лайтбокса. Вот то, на что похож тот код:
$('.printBtn').bind('click',function() {
var url = options.url + ( ( options.url.indexOf('?') < 0 && options.data != "" ) ? '?' : '&' ) + options.data;
var thePopup = window.open( url, "Member Listing", "menubar=0,location=0,height=700,width=700" );
thePopup.print();
});
Проблемой является сценарий, кажется, не ожидает до загрузок окна. Это хочет распечатать момент, окно появляется. В результате, если я нажму "отмену" к диалоговому окну печати, то она раскроется снова и снова до загрузок окна. В первый раз, когда я пытался печатать, я получил пустую страницу. Это могло бы быть то, потому что окно не закончило загрузку.
Я должен найти способ изменить предыдущий блок кода, чтобы ожидать до загрузок окна и затем распечатать. Я чувствую, что должен быть простой способ сделать это, но я еще не нашел его. Или это, или я должен найти лучший способ открыть всплывающее окно и печать из сценария лайтбокса в родительском окне, не чередуя код веб-страницы во всплывающем окне.
Вы должны поместить функцию печати в свой файл view-details.php и вызывать ее после загрузки файла, используя
<body onload="window.print()">
или
$(document).ready(function () {
window.print();
});
Вы уверены, что не можете изменить HTML во всплывающем окне?
Если можете, добавьте тег