2012-05-03 2 views
0
내가 제안/해결 방법 또는 할 수있는 더 나은 방법을 찾고

코드이 조금 FF와 크롬을 위해 작동하지만 hideProgress이보여 온로드 즉

function showPDF(url){ 
     $("#divId") 
       .html('<div id="loading">Loading....</div> 
         <iframe id="modalIframeId" width="100%" height="100%" 
          src='+url+' marginWidth="0" marginHeight="0" frameBorder="0" 
          scrolling="auto" title="Dialog Title" 
         onload="hideProgress();">Your browser does not support</iframe>') 
       .dialog('open'); 
     return ; 
    } 
    function hideProgress(){ 
     $('#loading').hide(); 
    } 

IE에서 호출되지 않습니다이 어떤 도움 주셔서 감사합니다

+0

무엇이 질문입니까? IE 디버그 콘솔에서 오류가 발생합니까? –

+0

안녕하세요 오류가없고 나는 심지어 hideProgress에 console.log가 있었고 FF로 표시되었지만 IE에서는 아무 것도 표시되지 않았습니다 – randy

답변

0

삽입하려는 태그에 넣는 대신 .on() 또는 .delegate() 함수로 #modalIframeId에 onload 이벤트 처리기 호출을 할당 해보세요. 저는 FF와 Chrome에서 작동하는 것에 놀랍습니다. 대부분의 경우 jQuery가 페이지의 코드와 상호 작용하기 때문에 동적 인 코드 조각과 같은 이벤트 핸들러를 할당하는 것이 효과적이지 않습니다. #modalIframeId iframe의 고유 ID를 가지고 실험해볼 수도 있습니다. 페이지에서 showPDF() 함수를 두 번 이상 호출하면 id가 중복되어 jQuery가 혼란스럽고 예상치 못한 결과가 발생합니다. 내 경험상 #modalIframeId를 제거한 다음 다시 추가하더라도 여전히 문제가 발생할 수 있습니다. 고유 ID를 작성할 때마다 잠재적 인 문제점을 예방할 수 있습니다.

+0

그래서 시도했습니다 $ ("#modalIframeId") .live ("load", function (event) { console.log ('modalIframeId onLoad'); $ ('# loading'). hide(); }); . 및 $ ('#의 modalIframeId') 부하 (함수() { 을 console.log ('modalIframeId의 onLoad는');. $ ('#로드')) (숨길; 을}); 도 호출 된 것 같지 않습니다. BTW 나는 ID가 modalIframeId를 사용하여 안전하다고 생각했습니다. 모달 대화 상자 였기 때문입니다. 방금 네가 .on() 또는 .delegate()라고 언급 한 것을 알아 챘다. 나는 그것들을 사용하는 방법을 연구 할 필요가있다. – randy

+0

나는 몇 가지 시도했지만 아무것도 작동하지 않는 것 같습니다. 내 기능은 다음과 같이 표시됩니다. : function showPDF (url) { $ ("# divId") .html ('

Loading....
'을 지원하지 않습니다.) .dialog ('open '); 반환; } ' 그리고 나는 .live 아무것도 시도하지 않았다. '$ ('. myiframe'). ('로드', 기능) { console.log ('on modalIframeId onLoad'); $ ('# loading'). hide(); }); ' – randy

0

이전 답변에서 언급 한 문제는 여기에 이벤트 처리기를 인라인으로 연결한다는 것입니다. 찾고있는 기능은 단순히 기능을 분리하여 얻을 수 있습니다. 나는이 jsFiddle이 입증했습니다

http://jsfiddle.net/xyctR/2/

'로드'

모든 브라우저에 기록됩니다.

또한이 경우 jQuery UI의 dialog 메소드에 'open'을 전달할 필요가 없습니다. dialog()으로 전화하십시오.