라이트 박스에 링크에 지정된 URL을로드하는 jQuery를 사용하여 라이트 박스 플러그인을 만들었습니다. 코드는 정말 간단하다 :JQuery를 사용하여 팝업 창을 열고 인쇄하기
$('.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();
});
문제는 스크립트가 윈도우가로드 될 때까지 기다리지 않는 것입니다. 창이 나타나는 순간을 인쇄하려고합니다. 결과적으로 인쇄 대화 상자에서 "취소"를 클릭하면 창이로드 될 때까지 여러 번 팝업됩니다. 처음 인쇄 할 때 빈 페이지가 나타났습니다. 윈도우가로드를 끝내지 않았기 때문일 수 있습니다.
이전 코드 블록을 변경하여 창이로드되어 인쇄 될 때까지 기다리는 방법을 찾아야합니다. 이 작업을 쉽게 수행 할 수있는 것처럼 느껴지지만 아직 찾지 못했습니다. 그 중 하나 또는 팝업 창을 열고 팝업 창에서 웹 페이지 코드를 번갈아 표시하지 않고 상위 창에서 라이트 박스 스크립트로 인쇄하는 더 좋은 방법을 찾아야합니다. 당신이 팝업 창에서 HTML을 변경할 수 없습니다
음, view-details.php 파일에 코드를 추가하지 않고이 작업을 수행하려고합니다. 파일이 인쇄되고 있음을 알 필요가 없기 때문입니다. 그렇게하면 라이트 박스에로드하는 모든 파일에 코드 스 니펫을 추가 할 필요가 없습니다. –
Lightbox에서 window.open을로드하는 이유는 무엇입니까? jQuery를 사용하여 HTML을 AJAX를 통해로드하는 경우 jQuery에서 .load() 함수를 사용하고 onSuccess 콜백을 사용하여 인쇄를 트리거 할 수 있습니다. –
라이트 박스에서 잘 인쇄 할 수 없기 때문에. 이 검은 배경을 둘러싼 다. 자체 창에서 더 잘 보이고 인쇄됩니다. .load()를 사용하는 것은 흥미로운 아이디어이지만 라이트 박스가로드 된 직후에 내용이 인쇄되는 것을 원하지 않습니다. 사용자가 인쇄 링크를 클릭 할 때만 상자를 인쇄 할 수 있습니다. –