2009-07-14 1 views
0

jQuery 탭 레이아웃 내에 iframe이 있습니다. 나는 AJAX 파일 업로드를 시뮬레이트하기 위해 이미지를 업로드하기 위해 iframe을 사용하고있다. 내 iframe을 다시 게시 할 때마다 부모 페이지의 $ (document) .ready가 실행되어 현재 배치 된 탭을 재설정합니다.iframe 포스트 백이 부모에서 jQuery 'ready'함수를 호출하지 못하도록합니다.

이 문제를 방지하는 방법에 대한 아이디어가 있으십니까?

function uploadDone() { 

    var data = eval("("+ $('#upload_target').contents().find('body').html() +")"); 
    if(data.success) { 
     $('#upload_summary').append("<img src='" + data.full_path + "' />"); 
     $('#upload_summary').append("<br />Size: " + data.file_size + " KB"); 
    } 
    else if(data.failure) { //Upload failed - show user the reason. 
     alert("Upload Failed: " + data.failure); 
    } 
} 

$(document).ready(function() { 

    $('#image_uploader').submit(function() { 

     if($.browser.safari || $.browser.opera) { 

      $('#upload_target').load(function(){ 
       setTimeout(uploadDone, 0); 
      }); 

      var iframe = document.getElementById('upload_target'); 
      var iSource = iframe.src; 
      iframe.src = ''; 
      iframe.src = iSource; 

     } else { 

      $('#upload_target').load(uploadDone); 
     } 
    }); 

}); 
+0

코드를 게시 할 수 있습니까? iFrame에서 양식을 제출하고 부모 페이지의 document.ready에서 해당 플래그를 확인할 때 플래그를 설정하려고 할 수 없습니까? – SolutionYogi

+0

iframe의 포스트 백이 상위 페이지의 포스트 백을 일으키는 것은 정상적인 동작입니까? – cweston

답변

1

플래그는 의미가 있습니다 (요요가 언급 한 것처럼). 상위 프레임의 document.ready가 한 번만 실행되어야하는 경우 전역 플래그를 다시 시작할 때 확인할 수있는 값으로 설정하십시오.

또 다른 방법은 document.ready를 실행 한 후 바인딩을 해제하는 것입니다. 예. $(document).unbind('ready')