2010-07-15 2 views
8

내 사이트에 "이 페이지 인쇄"버튼이 있습니다.Safari : Iframe을 인쇄 할 때 두 개의 인쇄 대화 상자가 표시되지 않습니다.

숨겨진 iframe에 정적 인쇄 템플릿 HTML 파일을로드하고 jQuery를 사용하여 해당 페이지에 HTML을 복사 한 다음 window.print()을 Iframe 페이지에서 호출합니다. 사파리를 제외하고는 부모 프레임을 인쇄하기를 원할뿐입니다. 그래서 두 개의 인쇄 대화 상자가 열립니다.

iframe 내에서 window.print를 호출하고 iframe (document.printFrame.window.print())을 타겟팅하는 부모로부터 호출하려고했지만 관계없이 두 개의 대화 상자가 표시됩니다.

누구든지이 문제를 해결할 방법을 알고 있습니까? 부모가 아닌 Iframe 만 인쇄하고 싶습니다.

답변

1

버그를 재현 할 수 없습니다. 그것은 iframe 또는 부모 프레임에서 호출하는지 여부에 관계없이 나에게 잘 작동합니다 (예 : 인쇄 대화 상자가 하나만 표시됨). window.print()를 어딘가에 두 번 호출하는 것일까 요?

내가 맥 OS X에서 사파리 4.0.3을 실행하고 10.6

편집 : 여기는있다 : 난 그냥 사파리에서이 테스트 5.0/윈도우 7과 : http://jsfiddle.net/Kq9dc/

편집 2 제대로 작동하고 있습니다. 코드에서 다른 것이 아니라고 확신합니까?

EDIT 3 : 그냥 WINXP에 사파리의 여러 버전이 테스트 :

Safari 3.0 (first beta): Not working (no print dialog) 
Safari 3.1 (first non-beta): Works fine 
Safari 4.0: Works fine 
Safari 5.0: Works fine 
+0

두 번 호출하면 다른 브라우저에서도 동일한 동작이 발생할 것으로 예상됩니다. 흠 ... –

+0

@Diodeus는 [fiddle] (http://jsfiddle.net/Kq9dc/)으로 2 개의 인쇄 대화 상자를 얻고 있습니까? – quantumSoup

+0

@Diodeus Ran이 더 많은 테스트를 거쳤습니다. 제대로 작동하는 것 같습니다. – quantumSoup

0

이보십시오. 이에 넣어했다 iframe이 : 부모의 다음

function printPage() { print(); } 

:

function printIframe(id) 
{ 
    var iframe = document.frames ? document.frames[id] : document.getElementById(id); 
    var ifWin = iframe.contentWindow || iframe; 
    iframe.focus(); 
    ifWin.printPage(); 
    return false; 
} 

이이 중 하나가 작동 안 나는 새 창/탭을 개방을 시도 할 것, 및 인쇄 가능한 HTML로 채우기 . 당신이 조기에

  • 사용의 setTimeout() (의 onLoad 후 실행을 종료하지 않도록),

    • 가 새 창에서 </script>를 분할 조심하는

      var printwin = window.open("about:blank", "_new"); 
      printwin.document.open(); 
      printwin.document.write("HTML goes here..javascript which is going to print is in there too.."); 
      printwin.document.close(); 
      

      두 작은 것들이 완료 그렇지 않으면 파이어 폭스 사용자가 인쇄 대화 상자 아래 빈 페이지를 볼 수 있습니다.

  • 관련 문제