2011-02-16 5 views
2

내에서이 버그를 마우스 오른쪽 높이를 포기하지 않을 것은 유사합니다파이어 폭스가 iframe을

jQuery reports incorrect element height in Firefox iframe

그는 잘못된 번호를 다시 가져옵니다. 내 차이는 내 프레임이로드 될 때입니다. 즉, 0이됩니다.

상위 창에 내용의 높이를 보내려고합니다. 로드시 0을 계속 보냅니다. 50ms 동안 간격을 설정하면 올바른 숫자가 될 때까지 숫자가 증가하는 것을 볼 수 있습니다. 0은 항상 간격 앞에 주어진 첫 번째 숫자입니다.

내부 요소 중 적어도 하나에는 미리 정의 된 높이가 있습니다. 일부는 CSS가 있고 일부는 인라인입니다. 따라서 요소가 여전히로드중인 경우 0을 돌려 보내야하는 이유가 없습니다.

I console.log $ ('# 요소')의 경우 요소가 숨겨져 보이고 (최신 버전에서는 색이 바래다.) Chrome에서 실행하면 완벽하게 실행됩니다. 나는 또한 0을 준 네이티브 clientHeight를 시도했기 때문에 jQuery라고 생각하지 않는다.

편집 : 높이를 계산하기 전에 요소가 JS를 통해 추가됩니다. 그것들은 시작시에 페이지에 나타나지 않는 것이 문제 일 수 있습니다. 간단한 데모 페이지를 게시하려고 시도합니다.

이것은 확실히 말할 어렵다 등 당신의 HTML, jQuery를, 보지 않고 파이어 폭스 4 베타

+0

iframe 내에서 iframe 자체가 아닌 IFRAME에로드되는 요소에 액세스하려고합니다. 맞습니까? 또한, 어쨌든 jsFiddle에서 이것을 복제 할 수 있습니까? – clifgriffin

+0

예, iframe의 요소입니다. 나는 지금 바이올린에 데모를 얻을거야. –

답변

2

모든 것이 설정 될 때까지 표시하지 않으려 고하기 때문에 iframe은 계산시에 display: none입니다. 따라서 기술적으로 다른 창이지만 요소의 부모가 표시되지 않는다고 여전히 생각할 수 있습니다.

0

에 발생하지 않습니다.

반환되는 높이가 정확하지 않은 경우 offsetHeight을 사용하여 행운을 빕니다. 이거 해봤 니?

EDIT : 다른 생각 : 콘텐츠가 완전히로드되기 전에 JavaScript를 통해 IFRAME에 액세스하는 것이 문제가 될 수 있다는 것을 과거에 알아 봤습니다. 명심할 것.

+0

'offsetHeight'는 그런 운이 없었습니다. iframe에는 jquery가로드되고 너무 많은 HTML이 여기에 사용됩니다. 기본적으로 높이를 얻으려고하는 10 개의 LI가있는 UL이 있습니다. 디스플레이 블록이있는 양식의 치수와이 iframe의 td - all을 가져 오는 것과 비슷한 문제가 발생했습니다. –

+0

기본적으로 높이는 일반적으로 꽤 까다 롭습니다. FireBug를 사용하고 레이아웃 탭을 살펴 보는 것이 좋습니다. 마법의 조합을 되 찾는 방법을 찾아 낼 수 있어야합니다.또한 중단 점을 설정하고 감시 목록을 사용하여 마법 속성을 찾을 수 있어야합니다. 그것은 내가 조언을 위해 가지고있는 누구나 (미안) 이어도 :) – clifgriffin

3

이 질문은 오래된 질문인데 파이어 폭스에서는 iframe이 부트 스트랩 모달에 미리로드되어 있고 마지막으로 표시된 부분이 잘린 상태입니다. 그때까지 정확한 높이를 계산할 수는 없지만 jQuery를 사용하여 (최종 사용자에게) 원활하게 크기를 조정할 수 있습니다. 나는 비슷한 문제에 대한 해결책을 위해 사냥에 따를 경우 다른 여기에 대답 해요 :

$("#myIframe").load(function() { 
    $m = $(".modal-body"); 
    var mh = $m.height(); 

    var wait = setInterval(function() { 
    var ih = $("#myIframe").contents().find("body").height(); 
    if (ih == mh) { 
     clearInterval(wait); 
    } else if (ih > 0) { 
     clearInterval(wait); 
     $m.animate({ height: ih }); 
    } 
    }, 50); 

    $(".modal").modal("show"); 
}); 

아이디어는 그 iframe을로드 할 때, 브라우저는 높이가 될 때까지 나는 루프 0 계산하는 경우 보고 된 높이가 변경된 다음 컨테이너 크기를 부드럽게 애니메이션에 맞게 조정합니다.

관련 문제