2012-07-12 3 views
0

에 내가 jQuery를 UI 대화 상자가 열리지 않습니다. 그것은 파이어 폭스를 사용하여 작동하지만 IE를 사용하면 대화 상자를 연 직후에 alert을 넣지 않으면 열리지 않습니다. 누구든지 문제가 무엇이 좋을지 말해 줄 수 있습니까? 나는 다음과 같은 코드를 사용하고 있습니다 :jQuery를 UI 대화 상자가 인터넷 익스플로러

$("button").click(function() { 
    $("#dialog").dialog('open'); 
    //alert('test'); //if I put this alert, the dialog will open 
    $.ajax({ 
     type: "POST", 
     url: "testing.txt", 
     async: false, 
     dataType: "text", 
     success: function(returnText) { 
      $("#dialog").dialog('close'); 
      $("#textarea").text(returnText); 
     }, 
     error: function() { 
      $("#dialog").dialog('close'); 
     } 
    }); 
}); 

답변

4

open 이벤트로 인해 잠재적 인 애니메이션에 비동기 완료를 따라서 어떤 가능성이 일어나고 인해 IE의 느린 자바 스크립트 해석에 코드가 success 또는 error 콜백에 대화 상자를 닫습니다이다 (또한 비동기적임)는 대화 상자가 열리지 않는다는 것을 알기에 충분히 근접하여 open에 실행됩니다. AJAX 호출이 매우 빨리 완료되고 있다고 생각합니다.

AJAX를 setTimeout 블록에 넣는 방법입니다.

$("button").click(function() { 
    $("#dialog").dialog('open'); 

    setTimeout(function() { 
     $.ajax({ 
      type: "POST", 
      url: "testing.txt", 
      async: false, 
      dataType: "text", 
      success: function(returnText) { 
       $("#dialog").dialog('close'); 
       $("#textarea").text(returnText); 
      }, 
      error: function() { 
       $("#dialog").dialog('close'); 
      } 
     }); 
    }, 1); 
}); 

이 단순히 open 이벤트가 완료 할 수 있도록 할 $.ajax 전화를 대기합니다. John Resig는 왜 이런 종류의 일이 여기에서 작동하는지에 대한 좋은 글을 가지고 있습니다 - http://ejohn.org/blog/how-javascript-timers-work/.

+0

감사합니다. 내 문제가 해결되었습니다! 또한 팝업에 GIF 애니메이션이 있지만 작동하지 않습니다. 이 문제가 무엇이 좋을지 아십니까? – user1135357

+0

작동하지 않아야하는 이유가 없습니다. Chrome의 dev 도구의 네트워크 탭이나 Firebug의 Net 탭에서 이미지가 올바르게 요청되고 반환되는지 확인할 수 있습니까? 자바 스크립트의 초기 단계에서'new Image ('path/to/myImage.png');를 호출하여 할 수있는 이미지를 미리 가져와야하는 문제 일 수 있습니다. –

1

이 문제를 해결하는 또 다른 방법은 클릭 대신 mousedown 이벤트에 "dialog.open"파트를 넣는 것입니다. 그렇게하면 IE (8)를 파일을 다운로드하는 것과 같이 setTimeout에 넣을 때 IE 8을 좋아하지 않습니다.