Po chwili utworzyłem wtyczkę lightbox przy użyciu jQuery, która ładowałaby adres URL podany w łączu do lightboxa. Kod jest bardzo prosty:Użycie JQuery do otwarcia wyskakującego okna i wydrukowania
$('.readmore').each(function(i){
$(this).popup();
});
a link będzie wyglądał tak:
<a class='readmore' href='view-details.php?Id=11'>TJ Kirchner</a>
Wtyczka może również przyjmować argumenty za szerokość, wysokość, inny adres URL i więcej danych, aby przejść.
Problem, z którym teraz borykam się, to drukowanie lightboksa. Ustawiłem go tak, aby lightbox miał przycisk drukowania na górze pudełka. Ten link otworzy nowe okno i wydrukuje to okno. Wszystko to jest kontrolowane przez wtyczkę lightbox. Oto, jak wygląda ten kod:
$('.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();
});
Problem polega na tym, że skrypt nie oczekuje na załadowanie okna. Chce wydrukować w momencie pojawienia się okna. W rezultacie, jeśli kliknę przycisk "anuluj" w oknie dialogowym drukowania, będzie on ponownie pojawiał się ponownie, aż do momentu załadowania okna. Kiedy po raz pierwszy próbowałem drukować, dostałem pustą stronę. Możliwe, że okno nie zakończyło ładowania.
Potrzebuję znaleźć sposób na zmianę poprzedniego bloku kodu, aby poczekać, aż okno się załaduje, a następnie wydrukuje. Czuję, że powinien istnieć łatwy sposób, aby to zrobić, ale jeszcze go nie znalazłem. W tym celu, albo muszę znaleźć lepszy sposób na otwarcie okna wyskakującego i wydrukowanie ze skryptu lightbox w oknie nadrzędnym, bez naprzemiennego wyświetlania kodu strony w wyskakującym okienku.
Cóż, próbuję to zrobić bez dodawania kodu do pliku view-details.php, ponieważ ten plik nie musi wiedzieć, że jest drukowany. W ten sposób nie muszę dodawać snippitu kodu do każdego pliku ładowanego do lightboksa. –
Dlaczego używasz window.open, jeśli ładujesz go do Lightbox? Jeśli używasz jQuery do załadowania kodu HTML za pośrednictwem AJAX, możesz użyć funkcji .load() w jQuery i uruchomić drukowanie za pomocą wywołania zwrotnego onSuccess. –
Ponieważ nie mogę drukować bardzo dobrze z lightboksa. Mam wokół siebie całe to czarne tło. Wygląda i drukuje lepiej we własnym oknie. To interesujący pomysł, używając .load(), ale nie chcę, aby zawartość była drukowana zaraz po załadowaniu lightboxa. Tylko wtedy, gdy użytkownik kliknie link do drukowania, chcę, aby to pole zostało wydrukowane. –