Некоторое время назад я создал плагин лайтбокса, используя 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();
});
Проблема в том, что скрипт не ожидает загрузки окна. Он хочет напечатать момент появления окна. В результате, если я нажму «отменить» в диалоговом окне печати, оно будет всплывать снова и снова, пока не загрузится окно. Когда я впервые попробовал распечатать, я получил пустую страницу. Это может быть из-за того, что окно не завершило загрузку.
Мне нужно найти способ изменить предыдущий блок кода, чтобы дождаться загрузки окна, а затем распечатать. Я чувствую, что должен быть легкий способ сделать это, но я еще не нашел это. Либо так, либо мне нужно найти лучший способ открыть всплывающее окно и распечатать его из сценария лайтбокса в родительском окне, не меняя код веб-страницы во всплывающем окне.