2012-10-19 2 views
0

이 겉으로보기에는 간단한 작업에 약간의 문제가 있습니다.iFrame (ie9, Chrome, Firefox)에서 요소에 액세스

  1. 현재 URL을 iFrame에로드하려고합니다.
  2. 여러 div에 액세스하여 제거해야합니다.
  3. 수정 된 iFrame 만 인쇄해야합니다.

내가 지금까지 가지고 있지만로드 된 iFrame의 html 요소에 액세스 할 수 없습니다. 예상대로 iframe이의 내용은 인쇄하는,하지만 난 일을하려고 내 머리를 철수하고있는 나는 몇 된 div를 제거해야합니다

var newWidth = "1024px"; 
var url = window.location; 
var $iFrame = $('<iframe id="printFrame" style="width:' + newWidth + ' !important;  height:100 !important; border: 1px solid #000000;" name="printFrame"></iframe>'); 

$('#content-area').append($iFrame); 

$iFrame 
    .load(function() { 

    // NEED TO DO THIS IN THE IFRAME DOCUMENT: 
    // $('#content-area').remove(); 
    // CANT FIGURE OUT HOW 


    this.contentWindow.print(); // this prints fine 
    $(this).unbind('load'); 
    }) 
    .attr('src', url); 

감사합니다! Ron

+0

CSS를 통해 인쇄하기 위해 스타일을 지정하려면 iframe에서 페이지를로드해야합니다. – jbabey

답변

0

왜 JavaScript로하고 있습니까? 인쇄 스타일 시트를 사용하여 인쇄하지 않을 요소를 숨 깁니다.

는 새로운 스타일 시트를 추가

<link rel="stylesheet" type="text/css" media="print" href="print.css" /> 

당신이 print.css

div.noPrint { display : none; } 

여전히 iframe을 함께하고 싶어, 당신은에 contents()를 사용할 필요가 적용 할 규칙을 추가 요소에 액세스하십시오.

var iframeDivs = $iFrame.contents().find("div"); 
+0

왜 스타일 시트 접근법을 사용할 수 없는지에 대한 설명이 길지만, iFrame로드 함수 내에서 동일한 호출을하는 방법을 이해하는 데 도움이됩니다. – RSH

+0

마지막 줄이 보이지 않습니까? 그것이 iframe 내용에 액세스하는 방법입니다. – epascarello

+0

display : 아무 것도 div를 숨기지 않지만 ie9에서 인쇄 할 때 사용했던 공백의 여백을 220px 남겨 둡니다. – RSH

관련 문제